エンジニアリングにはほど遠い

iPhoneアプリとかサイトとかをつくっていくブログです。

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なしで見ればこうなるのは自然な事ですけどね。