日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Day07 - Ruby比一比:Symbol符号与String字串

發布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Day07 - Ruby比一比:Symbol符号与String字串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前情提要:

第六天我們透過Ruby代碼練習public,protected和privatemethod時,發現冒號在前面的參數,:mydraft,:myspace,這些就是符號Symbol。在今天,我們就來解釋Symbol吧!

Ruby經典面試題目#07
符號和字串有什么不同?What’s difference between symbol and string?

還記得我之前IT邦文章在Ruby on Rails項目例子中研究ruby的gem套件時,我發現這兩者寫法的功能是一樣的:

:image_directory => 'tingsimage'
功能跟下者一樣:

image_directory: 'tingsimage'
:冒號在前面,意思是符號

冒號在后面:,意思是給值

當時的發現,也是造就本篇文章想進一步探討跑來跑去的小淘氣冒號的原因。

比一比符號symbol字串string
意思有名字的符號物件指向字串物件的變數(leafor)
可不可變不可變immutable可變mutable
修改數組不可使用[]=方法可使用[]=方法修改字串
數組方法可使用[]取得數組內的字元可使用[]取得數組內的字元
字元方法可使用.length .upcase .downcase可使用.length .upcase .downcase
符號與字串轉換符號轉字串.to_s字串轉符號.to_sym
我們來用代碼實驗看看:

tingsmessage =“This is my 7th article!”
tingsmessage這個變數,指向“This is my 7th article!”這個字串物件,變數的用意,就是讓我的字串物件可以隨時做調整。(明天我的message跑馬燈就會換成第八天的招呼啰!)

如果我們把它變成::tingsmessage的符號呢?

它就會變成Symbol類別下的物件實體,名字叫做tingsmessage。

來用代碼實作:

:tingsmessage這個符號,名字有12個字元,名字的第1個字母是t(數組位置[0]代表第1個),第2個字母是i…以此類推:

p:tingsmessage.length #12
p:tingsmessage.upcase #TINGSMESSAGE
p:tingsmessage[0] #t
p:tingsmessage[1] #i
而tingsmessage這個每天都會變來變去的變數,所指向的字串,一共有23個字元:(不信你數數看!)

tingsmessage =“This is my 7th article!”
p tingsmessage.length #23
p tingsmessage.upcase #THIS IS MY 7TH ARTICLE!
p tingsmessage[0] #t
p tingsmessage[1] #h
身為變數的好處就是可以任意修改。我們來試試改字母:

tingsmessage[1] =“Z”
p tingsmessage[1] #Z
p tingsmessage #TZis is my 7th article!
然而符號呢?

:tingsmessage[1]=“Z”
#undefined method `[]=' for:tingsmessage:Symbol(NoMethodError)
符號會找不到[]=方法修改字串。你可以想像,符號就如同我們在護照上的名字,是不能修改的。(因為已經被定義在國際間海關通用的數據庫了。)

符號的好處是專一,它被寫在程序里固定的內存位置,所以提取性能較高。我們可以用object_id的方法來實驗:

3.times do
p:tingsmessage.object_id
end

印出結果:

1041308
1041308
1041308
而變來變去的變數每次都在內存里面,搬家到不同位置:

3.times do
p“tingsmessage”.object_id
end
印出結果:

46936214509440
46936214509260
46936214509180
在前述比較表,符號和字串之間可以互相轉換的。

p:tingsmessage #:tingsmessage
p:tingsmessage.to_s # tingsmessage前面的冒號已經不見了!

p tingsmessage # TZis is my 7th article!
p tingsmessage.to_sym #:TZis is my 7th article!前面多一個冒號
何時使用符號Symbol
需要性能較高地傳遞參數時,例如在之前我們使用rails建立項目,餐廳名字、電話等…,這些數據庫字段的名稱是固定不變的:

def restaurant_params
params.require(:restaurant).permit(:name,:address,:phone,:website,:image)
end
回到文初一開頭,我終于明白,

{:image_directory => 'tingsimage'}
其實是符號Symbol用在Hash(外圍被大括號{}包著)里,是變數給值=>的意思。

今天超級比一比,就到這里結束啦(xcsjbj)!

比一比符號symbol字串string
意思有名字的符號物件指向字串物件的變數
可不可變不可變immutable可變mutable
修改數組不可使用[]=方法可使用[]=方法修改字串
數組方法可使用[]取得數組內的字元可使用[]取得數組內的字元
字元方法可使用.length .upcase .downcase可使用.length .upcase .downcase
符號與字串轉換符號轉字串.to_s字串轉符號.to_sym
===

轉載于:https://www.cnblogs.com/lannyQ-Q/p/10748686.html

總結

以上是生活随笔為你收集整理的Day07 - Ruby比一比:Symbol符号与String字串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产黄色在线免费观看 | 福利一区三区 | 伊人久久大香线蕉成人综合网 | 男女视频在线观看免费 | 91干干干| aaa一区二区| 免费看黄色小视频 | av合集 | 污片免费在线观看 | 久久精品一区二区三区不卡牛牛 | 色88久久久久高潮综合影院 | 国产精品污污 | 91亚洲国产成人久久精品麻豆 | 碰在线视频 | 国产鲁鲁视频在线观看免费 | 99热精品免费 | 亚洲一区二区在线电影 | 成人影视在线看 | 国产av毛片| www.com毛片 | 国产富婆一级全黄大片 | 国产精品国产一区二区三区四区 | 91麻豆国产 | 夜夜嗨av禁果av粉嫩av懂色av | 一区二区三区在线不卡 | 国产一级影院 | 国产盗摄在线观看 | 韩日视频 | 日韩免费av网站 | 无码粉嫩虎白一线天在线观看 | 一级片在线免费 | 99久久人妻无码中文字幕系列 | 天天网综合| 亚洲欧美另类国产 | 黄色激情av| 密桃成熟时在线观看 | 亚洲一区二区不卡在线观看 | 看黄色网址 | 西西人体www大胆高清 | 黄色www视频| 妖精视频一区二区三区 | 玖玖在线资源 | 亚洲精品一区二区三区在线 | 封神榜二在线高清免费观看 | 开心激情婷婷 | 神马午夜影院 | 美女视频三区 | www夜插内射视频网站 | 爱情岛论坛永久入址在线 | 欧美日韩免费观看一区=区三区 | 久久99国产精品一区 | 波多野结衣在线视频播放 | 中国亚洲女人69内射少妇 | av爱爱爱 | 日韩bbw| 国产精品一区二区在线免费观看 | 国产做爰免费视频观看 | www夜夜操| 不卡一区在线 | 色婷婷社区 | 黑人玩弄人妻一区二区三区影院 | 视频精品一区二区 | 精品少妇一区二区三区在线观看 | 丁香在线视频 | 亚洲一级电影 | 欧美久久久久久久久久久久久久 | av毛片在线 | 翔田千里一区二区 | 91小视频在线 | 成人91视频 | 欧美狠狠干 | 五月婷婷婷| 国产精品久久久精品 | 亚洲日批 | 日本精品久久久 | 久草福利资源 | 张津瑜国内精品www在线 | www日本免费 | 日本加勒比在线 | 亚洲AV不卡无码一区二区三区 | 国产一区二区久久久 | 成人99| 欧美香蕉在线 | 成人欧美精品一区二区 | 亚洲欧美日韩中文字幕在线观看 | 欧美成免费 | 国产让女高潮的av毛片 | 欧美黄网站在线观看 | 欧美视频在线免费 | 亚洲另类欧美日韩 | 好男人网站 | 狠狠搞狠狠干 | 一区二区三区在线 | 国产不卡毛片 | 久草一本 | 正在播放木下凛凛xv99 | 一区二区三区欧美在线 | 日韩全黄 | 色福利在线|