なんとなく覚えてるし特に気にしなかった論理和や論理積の演算。
おさらいしてみました。
def check
true if hoge.present? && fuga.present?
end
↑とかやりがちでしたが、短くできそうです。
def check
hoge.present? && fuga.present?
end
以下おさらいです。
def hoge
# 論理積 AND
false && false #=> false
false && true #=> false
true && false #=> false
true && true #=> true
# 論理和 OR
false || false #=> false
false || true #=> true
true || false #=> true
true || true #=> true
# 排他的論理和 XOR ^
false ^ false #=> false
false ^ true #=> true
true ^ false #=> true
true ^ true #=> false
end
引用: (http://mt-net.vis.ne.jp/images/489/FEH14S_8_a1.gif)
論理積 AND &&
引用(http://www.wisdomsoft.jp/images/59.1.PNG)
論理和 OR ||
引用(http://www.wisdomsoft.jp/images/59.3.PNG)
注意
rubyのandやorはtrue, falseだけを返すわけではなく、式の結果がtrueかfalseか決定した段階での項の値が返る。
a = nil
b = 10
a || b # 10
a && b # nil
排他的論理和 XOR
引用(http://www.wisdomsoft.jp/images/59.5.PNG)