校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > 比較詳細(xì)的ruby symbol 學(xué)習(xí)資料

比較詳細(xì)的ruby symbol 學(xué)習(xí)資料

熱門(mén)標(biāo)簽:柯城手機(jī)地圖如何做地圖標(biāo)注 征服者企業(yè)地圖標(biāo)注 天津外呼系統(tǒng)怎么收費(fèi) 中牟外呼系統(tǒng)違法嗎 AI電銷(xiāo)機(jī)器人 線(xiàn)路 漯河電銷(xiāo) 巫師3地圖標(biāo)注魔力之所 淮安自動(dòng)外呼系統(tǒng)供應(yīng)商 外呼線(xiàn)路從哪里出來(lái)的
解釋的不錯(cuò),應(yīng)該明確了不少 
ruby symbol詳解
起因
最近在學(xué)習(xí)ruby on rails,的確是一個(gè)優(yōu)秀的數(shù)據(jù)庫(kù)開(kāi)發(fā)框架。但在過(guò)程中,發(fā)現(xiàn)在視圖文件夾中的rhtml文件里有大量的類(lèi)似于以下的語(yǔ)句:
td>%= link_to recipe.title, :action => “show”, :id => 1 %>/td>
這是一個(gè)指向鏈接,如果沒(méi)有冒號(hào)這句話(huà)的意思很好理解:這是一個(gè)指向http://127.0.0.1:3000/recipe/show/1的連接,也就是“顯示”數(shù)據(jù)庫(kù)表recipe中“id”為1的條目的信息,但讓人不解的是action和id前面的冒號(hào),它們是干甚么用的? 

ruby面向?qū)ο筇匦缘囊粋€(gè)缺點(diǎn)
ruby中,一切皆是對(duì)象。就一個(gè)簡(jiǎn)單的字符串舉例:
ruby -e ‘puts “hello world”.class'
String
這里打印了”hello world”的字符串所屬的類(lèi),結(jié)果顯示它是一個(gè)String對(duì)象的實(shí)例。我們還可以顯示它的對(duì)象號(hào)。
ruby -e ‘puts “hello world”.object_id'
41436168
ruby一向標(biāo)榜自己是完全的面向?qū)ο蟮脑蚓驮谟诖耍拇_做的很徹底。但是凡事有好就有壞,一個(gè)對(duì)象占用的內(nèi)存空間顯然會(huì)比純粹的變量大得多,當(dāng)程序中涉及到大量的字符串時(shí),一個(gè)ruby程序會(huì)占用過(guò)多的內(nèi)存。舉個(gè)例子說(shuō):
我們用hash列表來(lái)存儲(chǔ)歌曲的信息
song1 = { ‘title' => ‘used to love you', ‘a(chǎn)rtist' => ‘john legend'}
song2 = { ‘title' => ‘i still', ‘a(chǎn)rtist' => ‘backstreet boys'}
#……
#很多歌,這里只用兩首
for i in 1..2
 thesong=”song”+i.to_s
 eval -PROC
 #{thesong}.each_key { |key| puts key.object_id.to_s }
 PROC
end
結(jié)果:
41436144
41436408
41435904
41436000
因?yàn)閛bject_id各不相同,在hash表中的各個(gè)key都是獨(dú)立的String對(duì)象,即使內(nèi)容相同(如'title'),ruby還是將其視為不同的對(duì)象,這樣就無(wú)端地占用了不少內(nèi)存。但事實(shí)上,大多數(shù)情況下,我們僅將hash中的key視為字段而已,不會(huì)涉及到String類(lèi)的方法,ruby自動(dòng)將其設(shè)置為對(duì)象有殺雞用牛刀之嫌。 

symbol是什么
直譯來(lái)說(shuō)就是“符號(hào)”,在ruby就是形如:action這樣的,一個(gè)冒號(hào)后跟一段字符串。顯然,根據(jù)“一切都是對(duì)象”定律,它也是一個(gè)對(duì)象。
ruby -e ‘ puts :action.class ‘
Symbol
這個(gè)對(duì)象存在的意義在于,它解決了“同內(nèi)容字符串,不同對(duì)象”帶來(lái)的過(guò)多占用內(nèi)存的問(wèn)題。簡(jiǎn)單的說(shuō):action代表了'action'字符串,這里說(shuō)的是字符串,不是字符串對(duì)象。
ruby -e ‘ puts :action ‘
action
更確切的講就是一個(gè)symbol對(duì)象代表該對(duì)象的冒號(hào)后的字符串。
ruby -e ‘ puts :action ‘
action
ruby -e ‘ puts :”hello world” ‘ 
hello world
所有同內(nèi)容的字符串只需要一個(gè)標(biāo)記對(duì)象就可以代替,這樣減少了不必要的對(duì)象建立和內(nèi)存占用。但是,正如我強(qiáng)調(diào)的“symbol代表的是字符串,不是對(duì)象”,因此不要希望標(biāo)記可以使用String類(lèi)的諸如capitalize,center等方法,如果使用的話(huà)只會(huì)得到提示方法未定義的錯(cuò)誤報(bào)告:
ruby -e ‘ puts :action.capitalize ‘ 
-e:1: undefined method ‘capitalize' for :action:Symbol' (NoMethodError)
幸運(yùn)的是,symbol提供了轉(zhuǎn)換函數(shù)to_s用來(lái)生成一個(gè)字符串對(duì)象,它會(huì)提取字符串內(nèi)容并將其升級(jí)為對(duì)象。
ruby -e ‘ puts :action.to_s.capitalize ‘ 
Action
另外,很重要的一點(diǎn)是,symbol沒(méi)有賦值方法,換句話(huà)說(shuō)symbol一旦定義,將不能改變。
ruby -e ‘ :action=”hello” ‘ 
syntax error
很遺憾,即使使用了to_s,賦值依然無(wú)法順利進(jìn)行,因?yàn)閞uby會(huì)認(rèn)為“to_s=”是一個(gè)未定義函數(shù)。除非明確地為被轉(zhuǎn)換生成的字符串對(duì)象指定一個(gè)引用(但事實(shí)上在復(fù)制之后該連接的指向又發(fā)生了變化):
:action
myaction=:action.to_s
myaction=”lala”
puts myaction
結(jié)果:
lala
怎么使用symbol
任何可以使用symbol的地方都可以使用與之向?qū)?yīng)的字符串對(duì)象。在rails中有建立類(lèi)似javabean的方法:
attr_reader :action
它建立了一個(gè)讀取實(shí)例變量@action的方法,也可以寫(xiě)成這樣:
attr_reader “action”
反之,只要
字符串在程序運(yùn)行過(guò)程中不用改變
字符串不必使用String類(lèi)方法
那么我們可以放心用symbol來(lái)代替字符串對(duì)象,從而大大減少內(nèi)存的占用,在rails中尤為明顯。因?yàn)樾枰l繁地在各個(gè)控制方法和頁(yè)面之間跳轉(zhuǎn)和傳出數(shù)據(jù),大量的方法名由symbol來(lái)代替,及節(jié)約了內(nèi)存也提高了運(yùn)行速度。

標(biāo)簽:棗莊 大慶 西雙版納 甘孜 河池 內(nèi)江 克拉瑪依 南昌

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《比較詳細(xì)的ruby symbol 學(xué)習(xí)資料》,本文關(guān)鍵詞  比較,詳,細(xì)的,ruby,symbol,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《比較詳細(xì)的ruby symbol 學(xué)習(xí)資料》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于比較詳細(xì)的ruby symbol 學(xué)習(xí)資料的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲一区欧美一区| 久久精品国内一区二区三区| 日韩亚洲欧美一区| 99re成人在线| 国产在线精品免费av| 亚洲成人av一区二区三区| 国产女人aaa级久久久级| 69堂精品视频| 欧美在线一区二区三区| 国产成人精品一区二区三区网站观看| 一区二区三区不卡视频| 国产欧美精品一区二区色综合朱莉 | 一本大道综合伊人精品热热 | 福利91精品一区二区三区| 日日欢夜夜爽一区| 亚洲人午夜精品天堂一二香蕉| 精品国产一二三| 欧美肥妇bbw| 在线视频国内一区二区| 成人app网站| 国产成人自拍在线| 久久99精品久久久久婷婷| 亚洲h在线观看| 亚洲人被黑人高潮完整版| 国产精品久久久久影院老司 | 久久久亚洲国产美女国产盗摄 | 久久婷婷久久一区二区三区| 日韩欧美激情在线| 欧美一区二区三区在线观看| 欧美日韩综合在线免费观看| 日本精品视频一区二区| 99精品热视频| 一本久久精品一区二区| 99re亚洲国产精品| av色综合久久天堂av综合| 福利一区二区在线| 成人涩涩免费视频| av一区二区三区四区| 成人av影视在线观看| 成人精品一区二区三区四区| 成人黄色一级视频| 成人性生交大合| 不卡一区二区中文字幕| 91论坛在线播放| 在线观看日韩电影| 69精品人人人人| 欧美变态tickling挠脚心| 日韩精品一区二| 久久精品人人做人人爽人人| 久久久国产精华| 国产精品拍天天在线| 亚洲人精品午夜| 亚洲第一成年网| 美女视频黄免费的久久| 久久9热精品视频| 国产乱码精品一品二品| 成人永久看片免费视频天堂| 色综合 综合色| 91.com在线观看| 久久嫩草精品久久久久| 亚洲欧洲日韩一区二区三区| 亚洲中国最大av网站| 日韩成人av影视| 国产毛片精品视频| 一本一道综合狠狠老| 制服丝袜国产精品| 国产欧美一区二区精品秋霞影院| 综合网在线视频| 日韩一区精品视频| 国产成人av资源| 欧美影视一区二区三区| 欧美刺激脚交jootjob| 亚洲四区在线观看| 石原莉奈在线亚洲三区| 韩国成人精品a∨在线观看| 成人小视频免费在线观看| 成人av片在线观看| 欧美人与禽zozo性伦| 欧美一级一级性生活免费录像| 中文成人av在线| 亚洲激情自拍偷拍| 亚洲一区免费在线观看| 麻豆一区二区三| 成人一区二区视频| 欧美性生活一区| 精品精品国产高清一毛片一天堂| 色噜噜久久综合| 精品99999| 亚洲欧美日韩成人高清在线一区| 亚洲电影中文字幕在线观看| 久久99精品久久久久久动态图| 国产成人在线免费| 欧美在线免费视屏| 日韩精品一区二| 中文字幕av一区 二区| 亚洲伦在线观看| 日韩电影在线免费观看| 国产一区欧美日韩| 欧美视频中文一区二区三区在线观看| 日韩欧美国产一二三区| 中文字幕的久久| 亚洲资源在线观看| av亚洲精华国产精华精| 欧美一激情一区二区三区| 国产精品视频免费| 奇米亚洲午夜久久精品| 99久久99久久久精品齐齐| 中文字幕一区在线| 五月天国产精品| 91色在线porny| 亚洲精品在线电影| 夜夜亚洲天天久久| 福利电影一区二区| 日韩欧美国产三级| 亚洲成人综合视频| 国产精品影音先锋| 日韩视频国产视频| 亚洲精品成人天堂一二三| 国产成人啪免费观看软件| 国产精品毛片久久久久久| 麻豆专区一区二区三区四区五区| 91福利视频久久久久| 国产精品九色蝌蚪自拍| 国产乱子伦一区二区三区国色天香| 在线观看日韩电影| 亚洲欧洲综合另类| 成人av网站在线观看| 久久久久久久久久电影| 亚洲成精国产精品女| 欧美在线视频日韩| 亚洲色图19p| 国产成人免费在线| 久久尤物电影视频在线观看| 免费成人av在线| 色综合久久久网| 亚洲一区二区三区免费视频| 99精品国产99久久久久久白柏| 久久精品在这里| 极品美女销魂一区二区三区| 91精品国产欧美一区二区| 亚洲gay无套男同| 91日韩一区二区三区| 国产精品免费看片| 国产成人精品一区二 | 国产午夜精品一区二区三区视频 | 亚洲一区二区在线免费观看视频| 懂色av中文一区二区三区| 久久久久久久综合日本| 蓝色福利精品导航| 欧美精品123区| 久久国产精品99久久久久久老狼| 欧美一区二区在线视频| 天天综合色天天| 欧美精品久久99久久在免费线| 亚洲永久免费av| 色婷婷久久99综合精品jk白丝| 亚洲一区在线电影| 欧美精三区欧美精三区| 日本不卡1234视频| 精品免费国产一区二区三区四区| 美女mm1313爽爽久久久蜜臀| 精品国产免费视频| 成人免费精品视频| 亚洲乱码精品一二三四区日韩在线 | 亚洲人成网站精品片在线观看| 99re6这里只有精品视频在线观看| 国产精品久久久久影院老司| 99久久精品99国产精品| 一区二区三区精品视频在线| 欧美日韩大陆一区二区| 青青青爽久久午夜综合久久午夜| 日韩欧美成人激情| 夫妻av一区二区| 日韩精品成人一区二区在线| 日韩精品一区二区三区四区视频| 国产一区不卡视频| 国产精品传媒在线| 欧美四级电影在线观看| 一区二区视频在线| 久久一日本道色综合| aa级大片欧美| 午夜精品久久久久久久久久| 精品久久99ma| 一本一道波多野结衣一区二区| 人禽交欧美网站| 国产喂奶挤奶一区二区三区| 国产不卡免费视频| 综合色天天鬼久久鬼色| 欧美夫妻性生活| 国产成人小视频| 亚洲h在线观看| 国产欧美一区二区精品久导航 | 蜜桃一区二区三区四区| 热久久免费视频| 久久色中文字幕| 欧美乱妇20p| 国产suv精品一区二区6| 亚洲成av人片www| 国产精品午夜在线观看| 欧美性xxxxx极品少妇|