Ruby で ||= (or-equals) はどういう意味ですか? 質問する

Ruby で ||= (or-equals) はどういう意味ですか? 質問する

次のコードは Ruby ではどういう意味ですか?

||=

構文には何か意味や理由があるのでしょうか?

ベストアンサー1

a ||= bは条件付き代入演算子です。意味は次のとおりです。

  • aが未定義の場合、または偽りを評価しba結果に設定します。
  • それ以外の場合 (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 メソッドである場合は重要です。abab

参考文献:

おすすめ記事