爲什麼以下條件成立?我認爲平等將適用於這兩個變量,但事實並非如此。即使它們被括在圓括號中。爲什麼這種情況是正確的?
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
爲什麼以下條件成立?我認爲平等將適用於這兩個變量,但事實並非如此。即使它們被括在圓括號中。爲什麼這種情況是正確的?
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
num_1
,num_2
,並且"1"
所有評估爲true
。在Ruby中,所有字符串都是「truthy」。正如Philip Yoo所說,這導致了一個真實的表達num_2 == "1"
,其結果爲true
,and
編輯true
,這是事實。
「'num_1','num_2'和'」1「'都計算爲'與布爾運算符一起使用時爲true「不正確。他們真誠,但他們從未被評估爲「真實」。例如,'「1」&&「2」'評估爲「2」,而不是「真」。 – Amadan
@Amadan點了,謝謝。 –
不是一個確切的重複,但本質上的答案是,不是'false'或'nil'的東西是真的。 – 4castle
您的'if'條件首先檢查是否存在'num_1',因此基本上它是否具有設置的真值(即,該變量的值存在,且不爲空或假)。 然後('&&')條件檢查'num_2 ==「1」',在這種情況下是'true' .. –