2017-02-19 28 views
-1
def dog 
    return "apple" 
    return "orange" 
end 

dog 

嗨,爲什麼輸出只返回「蘋果」,不應該返回「蘋果」和「橙色」?我對編程相當陌生,不勝感激。在這方面解釋輸出

+0

'return'告訴程序停止執行該方法並返回賦給'return'的值,在本例中爲'apple''。如果你想同時使用兩個字符串「apple」和「orange」,你應該返回一個數組''return%w [apple orange]' –

+0

使用兩個空格來縮進 –

回答

0

return告訴程序停止執行該方法並返回給出的值return,在本例中爲"apple"。如果你想要兩個字符串"apple""orange"你應該可能返回一個數組。

def dog 
    return %w[apple orange] 
end 

此外,Ruby返回方法中的最後一行,使return不必要。你可以簡單地寫下面的內容。

def dog 
    %w[apple orange] 
end 

通常,在Ruby中,如果滿足或不滿足條件,則返回用於停止執行方法。像下面這樣。

def dog(likes_fruit = true) 
    return [] if likes_fruit == false 
    # return [] unless likes_fruit # (this is the same as above, but unless can be confusing when learning ruby) 
    %w[apple orange] 
end 
+0

爲什麼在這種情況下,輸出將是「鋼鐵俠將贏得」而不是「蝙蝠俠會贏」?因爲你提到「return告訴程序停止執行該方法並返回給定的返回值」。因爲「蝙蝠俠會贏」首先會跟着「鐵人將贏」,所以當紅寶石首次返回「蝙蝠俠會贏」時,不應該讓紅寶石告訴程序停止執行該方法並返回值「蝙蝠俠會贏」 ? – roppo

+0

請原諒我評論(問題)的格式,這是我第一次使用這個網站。我有時間的時候會學習格式。我希望我的問題有意義。 – roppo

+0

@roppo這是因爲你的lambda與你的'batman_ironman_lambda'是不同的上下文,並且lambda中的返回不影響你的方法,而是執行lambda。也許你想要的是一個'Proc'而不是一個lambda。看看這篇文章中的「返回關鍵字完全符合你的期望」部分。 http://blog.honeybadger.io/using-lambdas-in-ruby/ –