1. ホーム
  2. ruby

[解決済み] Rubyで||= (or-equals)はどういう意味ですか?

2022-03-26 07:16:47

質問

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

||=

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

どのように解決するのですか?

この問題は、RubyメーリングリストやRubyブログで頻繁に議論され、今ではRubyメーリングリストに 他のすべてのスレッド を、Rubyメーリングリストの中で議論しています。

ここに1つあります。 ||= (OR Equal)のスレッドとページの決定版リスト

もし、あなたが 本当に の11.4.2.3 "Abbreviated assignments"を見てみてください。 Ruby言語仕様書(案 .

第一の近似値として

a ||= b

は、以下と同等です。

a || a = b

ではなく と同じです。

a = a || b

しかし、それは第一近似値に過ぎず、特に a は未定義です。また、単純な変数の代入なのか、メソッドの代入なのか、インデックスの代入なのかによってもセマンティクスが違ってきます。

a    ||= b
a.c  ||= b
a[c] ||= b

はすべて異なる扱いを受けます。