Ruby 条件式で代入をした際のうっかり
ちょっとうっかりしたのでメモ。
変数に値を代入して、その値を判定した後に変数を使いたい場合
[1] pry(main)> if a = 1 > 0 [1] pry(main)* p a [1] pry(main)* end true => true [2] pry(main)> if (a = 1) > 0 [2] pry(main)* p a [2] pry(main)* end 1 => 1
前者はaに 1 > 0 の結果を代入する事になるのでaはtrue
後者はaに1を代入した上で、条件判定に入っている
ifなしで見ればこうなるのは自然な事ですけどね。