2016-08-15 3 views
0

次の条件が当てはまるのはなぜですか?私は両方の変数に平等が当てはまると考えていましたが、そうではありません。たとえ括弧で囲まれていても。この条件は本当ですか?

num_1は、それが本当であると評価するものは何ですか?

num_1 = "2" 
num_2 = "1" 

if num_1 && num_2 == "1" 
    puts "condition met" 
end 

私は次承知しているが、私がチェックすることを目的とするものである:ブール演算子と一緒に使用する場合

if num_1 == "1" && num_2 == "1" 
    puts "condition met" 
end 
+1

正確には重複していませんが、本質的に答えは 'false'でも' nil'でもないものが真であるということです。 – 4castle

+2

'if'条件式はまず' num_1'をチェックします。したがって、基本的に真理値が設定されている(つまり変数に値が存在し、ヌルまたはfalseではない)場合です。 条件式 'num_2 ==" 1 "'(この場合は 'true').. –

答えて

1

num_1num_2、および"1"すべてがtrueに評価されます。 Rubyでは、すべての文字列が「真実」です。 Philip Yooが述べたように、これはtrueと評価され、trueandと評価される真の表現num_2 == "1"をもたらします。

+0

" num_1'、num_2'、 '' 1 "'はすべて 'ブール演算子で使用される場合はtrue」が正しくありません。彼らは真実ですが、彼らは決して「真実」と評価されません。たとえば、 '' 1 '&& "2" 'は' '2''と評価されます。 – Amadan

+0

@アマダンポイントを取った、ありがとう。 –

関連する問題