8 months ago

||= 是什麼意思?
首先“||=” 是在ruby裡面是一個條件運算符号。

通常的解釋是 a || = b ===》 a || a = b但是這樣並不是特别準確。

這個解釋表示“如果 a 是false,nil 或者 undefined,那麼評判 b 並且將结果設置判定给 a 。

在ruby‘s 短回路計算中這樣解释:如果 a 是定義過的或者判定是 true,那麼運算符號右手邊的值就不會被判定,也就没右手邊的值什么事了。

當 a 和 b 都是 本地 變量时,區别不重要。但如果它們是類别的 獲得/設置 方法 那就很重要了。

比如:

a ||= 1;
=> 1
a ||= 2;
=> 1

foo = false;
=> false
foo ||= true;
=> true
foo ||= false;
=> true

這例子很好的解释了,當 a 已经定義好,那麼 a 就是那本身的值。
如果 a 是false ,那麼 a 就會 判定 b 值 並將结果設置為 a 的值。當 a 的值再次定義好後,就不会理 b 值了。

← btn-primary vs btn-danger vs default blank →
 
comments powered by Disqus