1
a=[]
a << 4 && a[0]+=1 && a[0]+=1 if a==[]
puts a.inspect
output [9]
我是ruby中的新手,我只是在嘗試一些東西。試圖理解ruby的優先規則的困難
我想知道正在執行哪些操作來獲得此結果以及以何種順序進行。
a=[]
a << 4 && a[0]+=1 && a[0]+=1 if a==[]
puts a.inspect
output [9]
我是ruby中的新手,我只是在嘗試一些東西。試圖理解ruby的優先規則的困難
我想知道正在執行哪些操作來獲得此結果以及以何種順序進行。
我將大大簡化您的示例。我猜你對你爲什麼得到9
而不是6
(4 + 1 + 1)感到困惑。這都是因爲&&
的優先級高於+
。
下面是您的代碼的簡化版本。
a = 4
a += 1 && a += 1
puts a.inspect #=> 9
發生了什麼事是你&&
是有約束力的,然後再到+
操作後綁定。這意味着你的代碼其實更像是這樣的:
a = 4
a += (1 && a += 1)
puts a.inspect #=> 9
如果你自己加括號,你會得到更多你所期望的東西。
a = 4
(a += 1) && (a += 1)
puts a.inspect #=> 6
真的不過,你永遠不會使用&&
這樣的,因爲你並不總是得到你所期望的......
其他棘手的事情,那if
語句的簡寫。這是一樣的:
if a == []
a << 4 && a[0]+=1 && a[0]+=1
end
你的問題是什麼? –
您可能會發現從較小的示例開始並以感應方式建立您的理解更容易... –
對不起,有人更改我的標題,我想知道計算機在做什麼,計算什麼操作和順序。 – jorar91