我理解為什么a = a在 Ruby 中會產生nil(請參閱Why is a = a nilin Ruby?)。
但是使用向右賦值運算子,a => a會產生錯誤:
irb(main):001:0> a => a
(irb):1:in `<main>': undefined local variable or method `a' for main:Object (NameError)
但是當右手邊不是一個復雜的圖案時,我想=>應該和 完全一樣=,只是翻轉了。
那么為什么不a => a表現得一樣a = a呢?
uj5u.com熱心網友回復:
從模式匹配檔案中我們知道:
<expression> in <pattern>是一樣的case <expression>; in <pattern>; true; else false; end。
所以:
a in a
實際上是以下的簡寫:
case a
in a
true
else
false
end
在上面的case運算式中,很明顯你會NameError在第一行得到 a。
我假設在評估順序方面的a => a行為類似于。a in a
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/495300.html
