プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plus) | 伊藤 淳一 |本 | 通販 | Amazon
Ruby の文法に and とか or があるが、&& と || と何が違うのか理解していなかったのでメモ。and, or, not は && や || が優先度が低い。したがって以下の式には違いが出てくる。
t1 = true
t2 = true
f1 = false
t1 || t2 && f1 #=> true
# t1 || (t2 && f1) と同じ
t1 or t2 and f1 #=> false
# (t1 or t2) and f1 と同じ
and や or は条件分岐で使うのではなく、制御フローを扱うのに向いている。
&& を使ってこう書くとエラーになる。
user.valid? && send_mail_to user
# (user.valid? && send_mail_to) user と解釈されてしまう
# user.valid? && send_mail_to(user) ならOK
and を使うとスマートに書ける。
user.valid? and send_mail_to user
# (user.valid?) and (send_mail_to user) と解釈される
orもスマートに利用することができる
def greet(country)
country or return 'countryを入力してください'
if country == 'japan'
'こんにちは'
else
'Hello'
end
end