精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

全面解讀Ruby symbol

開發(fā) 開發(fā)工具
Ruby symbol代表的是一個字符串,而不是對象。它為我們提供了以轉(zhuǎn)換函數(shù)to_s用來生成一個字符串對象。下面我們將會對大家做一個詳細(xì)介紹。

學(xué)習(xí)Ruby語言的朋友都知道,Ruby on rails是一個非常有利于數(shù)據(jù)庫開發(fā)的框架。在這里我們?yōu)榇蠹抑v解一下其中Ruby symbol的相關(guān)知識。#t#

最近在學(xué)習(xí)Ruby on rails,的確是一個優(yōu)秀的數(shù)據(jù)庫開發(fā)框架。但在過程中,發(fā)現(xiàn)在視圖文件夾中的rhtml文件里有大量的類似于以下的語句:

  1. < td>
  2. < %= link_to recipe.title,
     
    :action => “show”, :id => 1 %>
  3. < /td>   

這是一個指向鏈接,如果沒有冒號這句話的意思很好理解:這是一個指向http://127.0.0.1:3000/recipe/show/1的連接,也就是“顯示”數(shù)據(jù)庫表recipe中“id”為1的條目的信息,但讓人不解的是action和id前面的冒號,它們是干甚么用的?Ruby面向?qū)ο筇匦缘囊粋€缺點

Ruby中,一切皆是對象。就一個簡單的字符串舉例:

Ruby -e ‘puts “hello world”.class'
String

這里打印了”hello world”的字符串所屬的類,結(jié)果顯示它是一個String對象的實例。我們還可以顯示它的對象號。

Ruby -e ‘puts “hello world”.object_id'
41436168

Ruby一向標(biāo)榜自己是完全的面向?qū)ο蟮脑蚓驮谟诖耍拇_做的很徹底。但是凡事有好就有壞,一個對象占用的內(nèi)存空間顯然會比純粹的變量大得多,當(dāng)程序中涉及到大量的字符串時,一個Ruby程序會占用過多的內(nèi)存。舉個例子說:
我們用hash列表來存儲歌曲的信息

 

  1. song1 = { ‘title' => ‘used to 
    love you', ‘artist' =
    > ‘john legend'}   
  2. song2 = { ‘title' => ‘i still',
     ‘artist' =
    > ‘backstreet boys'}   
  3. #……   
  4. #很多歌,這里只用兩首   
  5. for i in 1..2   
  6. thesong=”song”+i.to_s   
  7. eval < < -PROC   
  8. #{thesong}.each_key { |key| 
    puts key.object_id.to_s }   
  9. PROC   
  10. end  

 

結(jié)果:

41436144
41436408
41435904
41436000

因為object_id各不相同,在hash表中的各個key都是獨立的String對象,即使內(nèi)容相同(如'title'),Ruby還是將其視為不同的對象,這樣就無端地占用了不少內(nèi)存。但事實上,大多數(shù)情況下,我們僅將hash中的key視為字段而已,不會涉及到String類的方法,Ruby自動將其設(shè)置為對象有殺雞用牛刀之嫌。

Ruby symbol是什么

直譯來說就是“符號”,在Ruby就是形如:action這樣的,一個冒號后跟一段字符串。顯然,根據(jù)“一切都是對象”定律,它也是一個對象。

 

  1. Ruby -e ‘ puts :action.class ‘   
  2. Symbol  

這個對象存在的意義在于,它解決了“同內(nèi)容字符串,不同對象”帶來的過多占用內(nèi)存的問題。簡單的說:action代表了'action'字符串,這里說的是字符串,不是字符串對象。

 

  1. Ruby -e ‘ puts :action ‘   
  2. action  

更確切的講就是一個Ruby symbol對象代表該對象的冒號后的字符串。

 

  1. Ruby -e ‘ puts :action ‘   
  2. action   
  3. Ruby -e ‘ puts :”hello world” ‘   
  4. hello world  

所有同內(nèi)容的字符串只需要一個標(biāo)記對象就可以代替,這樣減少了不必要的對象建立和內(nèi)存占用。但是,正如我強(qiáng)調(diào)的“symbol代表的是字符串,不是對象”,因此不要希望標(biāo)記可以使用String類的諸如capitalize,center等方法,如果使用的話只會得到提示方法未定義的錯誤報告:

 

  1. Ruby -e ‘ puts :action.capitalize ‘   
  2. -e:1: undefined method ‘capitalize' for
     :action:Symbol' (NoMethodError)  

     

幸運(yùn)的是,Ruby symbol提供了轉(zhuǎn)換函數(shù)to_s用來生成一個字符串對象,它會提取字符串內(nèi)容并將其升級為對象。

Ruby -e ‘ puts :action.to_s.capitalize ‘
Action

另外,很重要的一點是,symbol沒有賦值方法,換句話說symbol一旦定義,將不能改變。

Ruby -e ‘ :action=”hello” ‘
syntax error

很遺憾,即使使用了to_s,賦值依然無法順利進(jìn)行,因為Ruby會認(rèn)為“to_s=”是一個未定義函數(shù)。除非明確地為被轉(zhuǎn)換生成的字符串對象指定一個引用(但事實上在復(fù)制之后該連接的指向又發(fā)生了變化):

  1. :action   
  2. myaction=:action.to_s   
  3. myaction=”lala”   
  4. puts myaction  

結(jié)果:

lala

怎么使用Ruby symbol

任何可以使用symbol的地方都可以使用與之向?qū)?yīng)的字符串對象。在rails中有建立類似javabean的方法:

attr_reader :action

它建立了一個讀取實例變量@action的方法,也可以寫成這樣:

attr_reader “action”

反之,只要字符串在程序運(yùn)行過程中不用改變。

字符串不必使用String類方法

那么我們可以放心用Ruby symbol來代替字符串對象,從而大大減少內(nèi)存的占用,在rails中尤為明顯。因為需要頻繁地在各個控制方法和頁面之間跳轉(zhuǎn)和傳出數(shù)據(jù),大量的方法名由symbol來代替,及節(jié)約了內(nèi)存也提高了運(yùn)行速度。

責(zé)任編輯:曹凱 來源: jb51.net
相關(guān)推薦

2009-12-15 14:16:13

Ruby Contin

2009-12-14 18:14:27

Ruby DSL

2010-09-25 14:39:29

Bruce Tate

2009-12-15 10:10:42

Ruby過程對象

2010-12-14 11:46:55

職場

2009-12-16 14:33:21

Ruby哈希表

2009-12-16 10:41:37

Ruby隨機(jī)存取文件

2010-06-29 11:40:34

H.248協(xié)議

2019-06-21 15:29:26

Kubernetes網(wǎng)絡(luò)標(biāo)準(zhǔn)容器

2009-12-09 10:12:28

嵌入式Linux

2011-12-14 10:31:43

2009-10-21 10:03:36

綜合布線標(biāo)準(zhǔn)

2009-12-14 17:04:13

Ruby讀寫UNIX命

2009-12-15 10:48:54

Ruby局部變量

2009-12-16 17:07:27

Ruby on Rai

2010-07-09 15:04:48

UML部署圖

2010-06-01 17:17:28

2021-05-27 21:47:12

Python垃圾回收

2009-12-16 13:33:28

Ruby輸出文件信息

2009-12-14 10:20:12

Ruby自動化測試
點贊
收藏

51CTO技術(shù)棧公眾號

日韩久久在线| 国产精品久久久久久久电影| 无码一区二区精品| 日本精品不卡| 欧美电影《轻佻寡妇》| 欧美精品tushy高清| 国产免费裸体视频| 成人在线观看黄色| 成人一级片网址| 中文字幕一精品亚洲无线一区| www.色就是色.com| а√在线中文在线新版| 中文字幕精品三区| 国产精品乱子乱xxxx| 一区二区三区麻豆| 亚洲国产专区校园欧美| 日韩欧美三级在线| 正在播放亚洲| 神马午夜一区二区| 韩国成人精品a∨在线观看| 1769国内精品视频在线播放| 三级全黄做爰视频| 欧美禁忌电影| 亚洲成人网av| 手机精品视频在线| 福利视频一区| 欧美性生活大片免费观看网址| 国产奶头好大揉着好爽视频| 国产视频精品久久| 99精品国产热久久91蜜凸| 成人在线播放av| 波多野结衣在线电影| 亚洲另类自拍| 欧美激情videos| 久久国产精品国语对白| 成人vr资源| 亚洲区一区二区| 亚州av综合色区无码一区| 久久99精品久久久野外观看| 欧美日韩精品三区| 美女黄色片网站| 国产理论电影在线观看| 26uuu国产在线精品一区二区| 成人免费在线看片| aaa一区二区| 国产主播一区二区三区| 国产精品永久免费在线| 国产乱码77777777| 日日摸夜夜添夜夜添亚洲女人| 国内揄拍国内精品| 精品视频在线观看免费| 红桃视频国产一区| 欧美激情奇米色| 国产一级片免费| 国产综合欧美| 欧美激情视频一区二区三区不卡| 波多野结衣亚洲色图| 五月婷婷亚洲| 欧美精品少妇videofree| av漫画在线观看| 免费福利视频一区二区三区| 欧美日韩日本国产| 免费看一级大黄情大片| av网站无病毒在线| 中文字幕国产一区二区| 一本一道久久久a久久久精品91 | 九九视频精品免费| 国产中文字幕日韩| 国产免费黄色录像| 粉嫩欧美一区二区三区高清影视| 国产精品久久久久免费| 日韩av成人| 国产欧美一区二区三区沐欲 | 最新国产中文字幕| 男女男精品网站| 91青草视频久久| 成人激情四射网| 波多野结衣91| 日本午夜精品一区二区| 天堂аⅴ在线地址8| 亚洲欧美另类图片小说| 国产一级爱c视频| 韩国三级一区| 日韩欧美电影一二三| 色综合久久五月| 欧美色爱综合| 欧美韩国理论所午夜片917电影| 久久久久久久黄色片| 日韩欧美1区| 亚洲国产精久久久久久| 素人fc2av清纯18岁| 成人精品影视| 欧美国产日本在线| 亚洲精品国产无码| 国产一本一道久久香蕉| 国产在线精品一区| av在线1区2区| 亚洲成a天堂v人片| 一本色道久久亚洲综合精品蜜桃| 色播一区二区| 国产亚洲美女久久| 黄色小视频在线免费看| 日本不卡的三区四区五区| 性亚洲最疯狂xxxx高清| 中文字幕乱码中文字幕| 国产精品1024久久| 国产日韩专区在线| 色噜噜在线播放| 国产精品美女久久久久久2018| www污在线观看| 超碰最新在线| 色94色欧美sute亚洲线路一久| 五月天激情图片| 综合另类专区| 欧美成人三级电影在线| 国产性猛交xx乱| 亚洲在线黄色| 9a蜜桃久久久久久免费| 三区四区电影在线观看| 色综合久久久久网| 美女黄色一级视频| 欧美在线三级| 国产精品一区二区久久| 欧美一区二区视频| 亚洲午夜久久久久中文字幕久| 一区二区xxx| 久久91麻豆精品一区| 久久久久久久一区二区| 99久久精品免费看国产交换| 欧美激情在线一区二区| 国产偷人视频免费| 久久中文资源| 久久久久久久久久久人体| 国产特级黄色片| 中文字幕一区二| 九色porny自拍| 人人狠狠综合久久亚洲婷婷| 国产精品wwwwww| 天堂√在线中文官网在线| 亚洲福利视频一区二区| 久草福利在线观看| 亚洲欧洲日韩| 成人一区二区电影| 久久五月精品| 宅男在线国产精品| 女人裸体性做爰全过| 日本中文一区二区三区| 日韩亚洲一区在线播放| 亚洲承认视频| 国产午夜精品免费一区二区三区| 91精品国产高清一区二区三密臀| 免费视频一区二区| 欧美日韩在线不卡一区| 欧美激情喷水| 国产亚洲a∨片在线观看| 香蕉污视频在线观看| 久久久久久久久久美女| 日韩在线xxx| 欧美精品一区二区三区精品| 国产福利精品在线| 精品人妻一区二区三区日产乱码| 亚洲免费av在线| 亚洲av无码久久精品色欲| 欧美黄色免费| 国产伦一区二区三区色一情| 日韩伦理福利| 国产成人精品三级高清久久91| 久久久国产精品麻豆 | 先锋a资源在线看亚洲| 欧美日韩一区二| 精品久久久网| 欧美成人精品在线视频| 日韩在线观看视频一区二区三区| 婷婷丁香激情综合| 久久午夜福利电影| 国产资源在线一区| 3d动漫一区二区三区| 亚洲精品一级二级三级| www.亚洲天堂| av免费在线观看不卡| 亚洲一区二区三区在线播放| 亚洲观看黄色网| 日韩制服丝袜先锋影音| 午夜在线视频免费观看| 精品丝袜久久| 国产欧美韩国高清| 美女网站视频在线| 在线播放视频一区| 国产一级生活片| 国产日韩三级在线| 中文字幕在线视频一区二区| 夜夜精品视频| 一区二区三区四区免费视频| 亚洲综合网狠久久| 国产精品久久久久久久9999| 美女尤物在线视频| 日日骚av一区| 亚洲精品久久久狠狠狠爱| 色婷婷综合久久久久中文一区二区| 在线观看天堂av| 成人av综合一区| 日本三级黄色网址| 夜久久久久久| 99国产精品白浆在线观看免费| 欧美人妖在线| 国产精品自拍首页| av一级久久| 国产精品电影观看| 无遮挡在线观看| 久久久www成人免费精品| 亚洲天堂999| 午夜精品在线视频一区| 人妻人人澡人人添人人爽| 2021久久国产精品不只是精品| 超碰在线资源站| 欧美a一区二区| 丰满爆乳一区二区三区| 一区二区影院| 亚洲三级一区| av在线不卡顿| 蜜桃传媒视频第一区入口在线看| 精品久久亚洲| 91免费看片网站| 欧美日韩国产网站| 日本在线观看天堂男亚洲| 国精产品一区一区三区mba下载| 俺也去精品视频在线观看| 国产系列在线观看| 亚洲免费av片| 天天干天天干天天干| 精品久久久久久久久久久久久久久久久 | 久久一区二区三区四区五区| 欧美精品亚洲| 噜噜噜狠狠夜夜躁精品仙踪林| 亚洲一区二区三区在线视频| 日韩亚洲国产免费| 国产精品视频区1| 免费观看在线黄色网| 欧美军同video69gay| 色屁屁影院www国产高清麻豆| 亚洲成av人片在线| 国产中文字字幕乱码无限| 亚洲一区日韩精品中文字幕| 青娱乐国产盛宴| 一区二区三区欧美激情| 黄色一级片免费播放| 麻豆精品久久精品色综合| 亚洲高清免费在线观看| 日韩电影在线观看电影| 宅男噜噜噜66国产免费观看| 日韩福利视频导航| 天天爱天天操天天干| 奇米四色…亚洲| 亚洲精品性视频| 国产麻豆一精品一av一免费 | 国产91精品免费| 男人的天堂免费| 成人ar影院免费观看视频| 午夜男人的天堂| 久久午夜老司机| 一级在线观看视频| 亚洲日本中文字幕区| 欧美黄片一区二区三区| 亚洲成人免费电影| 久久国产精品免费看| 91成人网在线| 国产精品久久久久久69| 亚洲国产美女搞黄色| 国产精品30p| 色综合色综合色综合| 波多野结衣爱爱| 欧美福利视频一区| 好男人在线视频www| 亚洲欧美在线磁力| 看黄网站在线| 91av在线免费观看| 不卡亚洲精品| 999精品视频一区二区三区| 乱亲女h秽乱长久久久| 亚洲一二三区在线| 狠狠88综合久久久久综合网| 岳毛多又紧做起爽| 久久精品理论片| 国产免费无码一区二区| 国产午夜亚洲精品午夜鲁丝片| 亚洲女人久久久| 久久久精品免费网站| 天堂av免费在线| 亚洲综合免费观看高清完整版在线 | 亚洲熟妇一区二区三区| 亚洲欧洲一区二区在线播放| 久久精品视频日本| 欧美日韩久久久久久| 人妻无码一区二区三区久久99| 在线国产精品视频| av电影在线地址| 成人在线播放av| 国产亚洲一卡2卡3卡4卡新区| 日本三日本三级少妇三级66| 久久国产精品毛片| 男男受被啪到高潮自述| 亚洲国产精华液网站w| 日韩伦人妻无码| 6080yy午夜一二三区久久| 久久精品蜜桃| 久久久免费高清电视剧观看| 深夜日韩欧美| 欧美日韩一区二区三区在线视频| 国语精品一区| 欧美日韩理论片| 欧美国产成人精品| 日韩 欧美 综合| 精品国产一区二区在线观看| 午夜伦理在线| 国产精品aaaa| 日韩精品导航| 少妇人妻大乳在线视频| 国产一区视频网站| 午夜国产福利视频| 日本乱人伦aⅴ精品| 少妇av在线播放| 欧美激情精品久久久久久免费印度 | 日本中文字幕一区二区有码在线 | 色婷婷成人网| 日韩一二三区不卡在线视频| 国产欧美精品久久| 免费在线观看日韩av| 亚洲色图在线视频| 伊人成人在线观看| 亚洲人成网站在线播| 天堂中文最新版在线中文| 国产精品美女黄网| 亚洲小说欧美另类婷婷| 国产又黄又嫩又滑又白| 亚洲免费在线视频| 99久久精品国产色欲| 久久亚洲一区二区三区四区五区高 | 黄色短视频在线观看| 91麻豆产精品久久久久久| 国产精品19乱码一区二区三区| 欧美成人欧美edvon| 伊人精品影院| 99re在线国产| 韩日成人在线| 国产视频久久久久久| 精品久久久久久亚洲国产300 | 欧美视频xxxx| 中文字幕亚洲自拍| 亚洲天堂网站| 黄色网zhan| 成人黄色大片在线观看 | 麻豆精品精品国产自在97香蕉| 日本污视频网站| 欧美少妇一区二区| 麻豆网站在线看| 91免费看网站| 亚洲激情网站| 中文精品在线观看| 欧美亚洲综合色| 黄色在线观看网站| 国产福利不卡| 亚洲永久免费| 亚洲精品国产精品国自| 91精品国产一区二区三区蜜臀| 婷婷av在线| 精品一区久久| 免费观看久久久4p| 91九色丨porny丨极品女神| 精品久久五月天| 亚洲校园激情春色| 亚洲va久久久噜噜噜久久狠狠 | 91精品视频专区| 欧美天天在线| b站大片免费直播| 91精品国产色综合久久不卡蜜臀 | 精品影片一区二区入口| 日本高清视频一区二区| 国产黄a三级三级三级av在线看| 成人区精品一区二区| 欧美亚洲网站| 欧美肥妇bbwbbw| 日韩av在线免费| 亚洲国产综合在线观看| 五十路熟女丰满大屁股| 中文字幕高清一区| 国产91久久久| 国产精品美乳一区二区免费| 欧美韩国一区| 91网站免费入口| 日韩精品一区二区三区中文精品| 成人福利视频| 蜜桃视频一区二区在线观看| 久久久久久麻豆| 黑人乱码一区二区三区av| 国产精品一区二区3区| 在线综合欧美| 欧美黄色aaa| 国产一区二区三区精品久久久| 亚洲无线观看| 超碰超碰在线观看|