2016-08-15 43 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',因此基本上它是否具有設置的真值(即,該變量的值存在,且不爲空或假)。 然後('&&')條件檢查'num_2 ==「1」',在這種情況下是'true' .. –

回答

1

num_1num_2,並且"1"所有評估爲true。在Ruby中,所有字符串都是「truthy」。正如Philip Yoo所說,這導致了一個真實的表達num_2 == "1",其結果爲trueand編輯true,這是事實。

+0

「'num_1','num_2'和'」1「'都計算爲'與布爾運算符一起使用時爲true「不正確。他們真誠,但他們從未被評估爲「真實」。例如,'「1」&&「2」'評估爲「2」,而不是「真」。 – Amadan

+0

@Amadan點了,謝謝。 –

相關問題