Rubyの「&=(アンド・イコール)」って何?
Rubyのコードで見慣れない &=
を見て検索してもなかなかヒットしなかったので、
私なりに考えて腑に落ちました。
リファレンスマニュアルに載っているんですけどね。
自己代入
+=
-=
はプログラミングをある程度やっている方々であれば理解できると思います。
例えば、 x += y
は x = x + y
と等価です。
この考え方を応用すれば、 x &= y
は x = x & y
と等価ですね。
&演算子
&演算子は積集合を求めます。
言い換えると、比較する対象に共通する要素を求めます。
irbを使って検証してみます。
irb(main):001:0> x = [1, 2, 3] => [1, 2, 3] irb(main):002:0> y = [3, 4, 5] => [3, 4, 5] irb(main):003:0> x & y => [3]
ということは、
irb(main):004:0> x &= y => [3] irb(main):005:0> x => [3]
となるわけですね。
true と false の積集合
irb(main):001:0> x = true => true irb(main):002:0> y = false => false irb(main):003:0> x &= y => false
となりました。
true と nil の積集合
irb(main):001:0> x = true => true irb(main):002:0> y = nil => nil irb(main):003:0> x &= nil => false
結果は同じく false
となりました。