演算子の優先順位

演算子の優先順位を意識していないと予想外の結果になることがあるので注意しましょうというお話。

  • 和集合を代入したい場合
irb(main):001:0> hoge = nil || 'hoge'
=> "hoge"
irb(main):002:0> hoge = (nil || 'hoge')
=> "hoge"

結果は同じ。

  • 和集合を配列に追加したい場合
irb(main):003:0> hoge = []
=> []
irb(main):004:0> hoge << (nil || 'hoge')
=> ["hoge"]
irb(main):005:0> hoge = []
=> []
irb(main):006:0> hoge << nil || 'hoge'
=> [nil]
より << が強いので、カッコの有無で結果が変わってしまいます。


確かに、リファレンスを見ると = と << の優先順位が全然違いますね。