次のコードは Ruby ではどういう意味ですか?
||=
構文には何か意味や理由があるのでしょうか?
ベストアンサー1
a ||= b
は条件付き代入演算子です。意味は次のとおりです。
a
が未定義の場合、または偽りを評価しb
、a
結果に設定します。- それ以外の場合 (
a
が定義されており、真と評価される場合)、 はb
評価されず、割り当ては行われません。
例えば:
a ||= nil # => nil
a ||= 0 # => 0
a ||= 2 # => 0
foo = false # => false
foo ||= true # => true
foo ||= false # => true
紛らわしいことに、これは他の代入演算子 ( など+=
) と似ていますが、動作は異なります。
a += b
翻訳するとa = a + b
a ||= b
大まかに訳すとa || a = b
これは の略記法ですa || a = b
。違いは、a
が未定義の場合、a || a = b
が発生するのNameError
に対し、 はにa ||= b
設定することです。とが両方ともローカル変数である場合、この区別は重要ではありませんが、どちらかがクラスの getter/setter メソッドである場合は重要です。a
b
a
b
参考文献: