最近我開始學習Ruby,並且我正在試驗Ruby如何在單個對象上調用方法。但是,下面的代碼塊卡住了我一下,因爲我沒有意識到它實際上是如何工作的,以通過方法語法調用的操作符方法的優先級
a = 4
b = -3
c = 2
puts a*b-c # operator precedence preserved
puts a . * b . - c # operator precedence not preserved
puts a.send(:*, b).send(:-, c) # operator precedence preserved
puts a-b*c # operator precedence preserved
puts a . - b . * c # operator precedence preserved
puts a.send(:-, b).send(:*, c) # operator precedence not preserved
輸出:
-14
-20
-14
10
10
14
任何人都能夠解釋的運算符優先級如何工作的嗎?我認爲每個部分中的所有三種語法應該反映相同的含義。如果這個問題已經被詢問或解釋了,我先道歉。
我不明白你的問題。在示例2,3,5和6中,您不使用操作符語法,而是使用方法語法,因此運算符優先級甚至不起作用。 – 2012-08-07 02:40:34
這是否意味着我們不能在Ruby中使用操作符語法和方法語法(反之亦然)?我想說例子2和3或5和6解釋相同的意思。你能好好解釋這個嗎?謝謝。 – joarderm 2012-08-07 02:53:30
@JoarderKamal所有的方法調用總是具有相同的優先級,而運算符可能有不同的優先級。 – 2012-08-07 02:58:01