2015-11-23 85 views
-2

我:爲什麼不`array.include` [原文]顯示正確的輸出

num = ["jack","sparrow","terminator","leonidus"] 
name = "jack" 

解決的辦法是:

if num.include? name 
    puts " Jack is here" 
else 
    puts " Invite jack" 
end 
# => "Jack is here" 

我的舊腳本是:

val = num.include? name 
if val == "true" 
    puts " Jack is here" 
else 
    puts " Invite jack" 
end 
# => "Invite jack" 

爲什麼我的舊腳本無法正常工作?它有什麼問題?

+0

這是因爲你試圖檢查布爾值爲'String'。嘗試更改'val ==「true」'just'val' – Lahiru

+1

您代表'true'爲'「true」'。第二個是字符串。 – Charles

+0

解決方案是什麼?你的腳本在什麼意義上不起作用?它有什麼問題? – sawa

回答

0

include方法返回一個布爾值。因此,您的解決方案消除了其中一個步驟,這非常棒。舊腳本無法正常工作,因爲您試圖將布爾值與字符串進行比較。你可以拿走你的報價true,你會想出一個工作解決方案:if val == true。希望這可以幫助。

+0

是的,因爲它是檢查布爾值,所以在這裏只使用'val'就足夠了:) – Lahiru

+0

什麼是'include'? – sawa

+0

@sawa這是一個在數組中使用的方法,如果該數組包含傳入的參數。 例如: '[1,2,3,4,5] .include?(2 )#true' '[1,2,3,4,5] .include?(10)#false' – sclem72

1
true == "true" 
# => false 

true不等於"true"即使"true"是truthy值,即,澆注成型爲布爾它將導致真(nil是falsy,令人驚訝的是0 truthy)。要將某些東西轉換爲其布爾值,可以使用以下語法:!!variable。您不需要在if條件內執行此操作,因爲它已在內部完成。

+0

請加入更多的細節讓你的回答更清晰 –

+0

得到了答案,謝謝你的幫助。 –

相關問題