Ruby的運算子和語句優先順序介紹

2022-09-26 05:36:10 字數 1132 閱讀 2864

ruby 是一種表達能力很強的語言,這得意於它異常豐富的運算子和語法糖,雖然 ruby 一直把最小驚訝原則作為它的哲學之一,但還是常常看到讓人驚訝不已,難於理解的**,這可能是因為對它運算子和語句優先順序理解不透導致,今天就和大家聊一聊 ruby 運算子和語句的優先順序。

先看一句簡單的**,www.cppcns.com猜一猜它的輸出是什麼。

複製** **如下:

puts {}.class

很多人一定以為結果是 hash,但實事上結果是空,不信可以在 irb 裡試一試。

再看一段**。

複製** **如下:

puts "5 && 3 is程式設計客棧 #"

puts "5 and 3 is #"

a = 5 && 3

b = 5 and 3

puts "a is #"

puts "b is #"

結果是:

複製** **如下:

5 && 3 is 3

5 and 3 is 3

a is 3

b is 5

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

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

下面一張**是 ruby 中常見的運算子和語句的優先順序列表,從上到下優先順序遞減。

ruby operators (highest to lowest precedence)

幾條便於記憶的原則:

1.關鍵字類如if and 等的優先順序是要比符號類低;

2.賦值符號 = ||= 等優先順序也比較低,僅次於關鍵字類;

3. = 元素引用的優先順序非常高www.cppcns.com。

本文標題: ruby的運算子和語句優先順序介紹

本文位址:

運算子優先順序 C 運算子優先順序

c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...

運算子優先順序 Python 運算子優先順序

python 運算子優先順序 運算子描述 lambda lambda表示式 or布林 或 and布林 與 not x 布林 非 in,not in 成員測試 is,is not 同一性測試 比較 按位或 按位異或 按位與 移位 加法與減法 乘法 除法與取餘 x,x 正負號 x 按位翻轉 指數 x.a...

運算子優先順序 PHP運算子優先順序

php運算子優先順序 結合方向 運算子附加資訊 非結合clone new clone 和 new左 array 非結合 遞增 遞減運算子 非結合 int float string array object bool 型別非結合 instanceof 型別右結合 邏輯操作符 左 算術運算子 左 算術運...