「<<」演算子はArrayクラスに対して要素を追加する時によく使う。自分の頭の中では要素の代入を行う「=」演算子とセットで認識されていたので、次のようなコードを書いて30分くらいプチハマりした。
flag_1 = true flag_2 = true flag_3 = false mylist = [] mylist << flag_1 ? 1 : 0 mylist << flag_2 ? 1 : 0 mylist << flag_3 ? 1 : 0 p mylist # => [true, true, false] # 本当は↓のようになってほしかった # => [1, 1, 0]
「<<」演算子が条件演算子よりも優先順位が高いため、「(mylist << flag1) ? 1 : 0」のような結合をしてしまったというわけ。