最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ruby的運算符和語句優(yōu)先級介紹

 更新時間:2015年03月24日 09:01:42   投稿:junjie  
這篇文章主要介紹了Ruby的運算符和語句優(yōu)先級介紹,本文先是給出了一些小例子來驗證運算符和語句優(yōu)先級,然后總結(jié)出一個優(yōu)先級表,需要的朋友可以參考下

Ruby 是一種表達能力很強的語言,這得意于它異常豐富的運算符和語法糖,雖然 Ruby 一直把最小驚訝原則作為它的哲學(xué)之一,但還是常??吹阶屓梭@訝不已,難于理解的代碼,這可能是因為對它運算符和語句優(yōu)先級理解不透導(dǎo)致,今天就和大家聊一聊 Ruby 運算符和語句的優(yōu)先級。

先看一句簡單的代碼,猜一猜它的輸出是什么。

復(fù)制代碼 代碼如下:

  puts {}.class

很多人一定以為結(jié)果是 Hash,但實事上結(jié)果是空,不信可以在 irb 里試一試。

再看一段代碼。

復(fù)制代碼 代碼如下:

puts "5 && 3 is #{5 && 3}"
puts "5 and 3 is #{5 and 3}"
a = 5 && 3
b = 5 and 3
puts "a is #{a}"
puts "b is #"

結(jié)果是:

復(fù)制代碼 代碼如下:

5 && 3 is 3
5 and 3 is 3
a is 3
b is 5

有沒有覺得奇怪 b 怎么是 5 而不是 3 呢。

如果這兩個例子你也覺得奇怪,那說明你對 Ruby 一些運算符和語句的優(yōu)先級理解還不透徹,判斷有誤。 puts {}.class 實際上相當于 (puts {}).class -> nil.class 所以輸出為空。{}相當于一個空的 block,優(yōu)先和方法 puts 結(jié)合。 && 和 and 的優(yōu)先是不同的,而且和 = 號的優(yōu)先級順序比較, && > = > and,所以 a = 5 && 3 相當于 a = ( 5 && 3),而 b = 5 and 3 相當于 ( b = 5 ) and 3,所以結(jié)果 a 和 b的值是不同的。

下面一張表格是 Ruby 中常見的運算符和語句的優(yōu)先級列表,從上到下優(yōu)先級遞減。


Ruby operators (highest to lowest precedence)

幾條便于記憶的原則:

1.關(guān)鍵字類如if and 等的優(yōu)先級是要比符號類低;
2.賦值符號 = ||= 等優(yōu)先級也比較低,僅次于關(guān)鍵字類;
3.[] []= 元素引用的優(yōu)先級非常高。

相關(guān)文章

最新評論

铁岭县| 万宁市| 治多县| 扶沟县| 汕尾市| 阿合奇县| 拉孜县| 青田县| 吴江市| 尤溪县| 夏津县| 兴隆县| 高碑店市| 谢通门县| 丰县| 江华| 勃利县| 广灵县| 元阳县| 神木县| 荔浦县| 大城县| 兴宁市| 肥乡县| 鱼台县| 芦溪县| 桦川县| 陆川县| 新巴尔虎左旗| 南木林县| 沈阳市| 阜新市| 永康市| 盐边县| 祁门县| 都江堰市| 柏乡县| 应用必备| 儋州市| 古蔺县| 绥宁县|