Ruby 中的條件賦值
Stewart Nguyen
2022年5月18日
a ||= b
是一個條件賦值運算子。相當於 a || a = b
。
如果 a
為假,即:nil
或 false
,則評估 b
並將結果分配給 a
。
如果 a
為真,即除 nil
和 false
外,b
將不被評估,a
將保持不變。
例如:
a = nil
a ||= 10
a
=> 10
a = 1
a ||= 10
a
=> 1
問題是:如果 a += b
等於 a = a + b
那麼 a ||= b
應該是 a || a = b
。
這是一個完全錯誤的假設。如果沒有事先宣告 a
,a || a = b
將導致未定義的變數錯誤。
a || a = 10
輸出:
NameError: undefined local variable or method `a'