2013-12-18 32 views
0

試圖學習Ruby作爲我的第一種編程語言。我對這方面的一切都很瞭解,但是我在這個練習中留下了一個空白,不知道該從哪裏開始,可以使用一些幫助。停留在Learnstreet Ruby課程7.9介紹||運營商

9:介紹||運算符

類似於邏輯運算符和運算符& &,我們有一個邏輯或運算符||。字符|位於鍵盤上的輸入鍵上方,稱爲管道。類似於雙和號,這個通常也被稱爲雙管。 ||如果任何條件可以爲真,則使用運算符。例如 - 如果數字== 1 ||如果數字是1或3,數字== 3返回true。簡單的權利?根據代碼編輯器中的說明實現方法dinner_choice。

該函數將返回:

  1. 「牛排」如果名人是「布拉德·皮特」或「安吉麗娜·朱莉」
  2. 「意大利」如果名人是「阿什頓·庫徹」或「黛咪摩爾」
  3. 「法國」如果名人是以上都不是

這是我的企圖。

def dinner_choice(celebrity) 
return "steak" if celebrity == "brad pitt" || celebrity == "angelina jolie" 
return "italian" if celebrity == "ashton kutcher" || celebrity == "demi moore" 
else return "french" 
end 

+0

你試過什麼? – bjhaid

+0

'||'只是說'或'的另一種方式。 – steenslag

回答

0

你正在尋找的一般形式是寫的語句是這樣的:

def dinner_choice celebrity 
    return "steak" if celebrity == "Brad Pitt" 
    return "foo" if # add programming here 
end 

你會檢查名人變量,看看它的東西,你的方法知道如何處理,並給出與輸入一致的結果。

明確的return告訴Ruby解釋器停止評估方法中的其餘代碼並給出指定的結果。

你也可以用case statements進行試驗,但IMO在大多數情況下都很難以維護。

+0

感謝您的一般形式,我能從它開始 – user3116918

1

你接近,這是你想要的

def dinner_choice(celebrity) 
    return "steak" if celebrity == "brad pitt" || celebrity == "angelina jolie" 
    return "italian" if celebrity == "ashton kutcher" || celebrity == "demi moore" 
    return "french" 
end 

你不希望在年底的最後else。您可以簡單地使用return "french",因爲如果上面的任何語句匹配,它將不會到達該行。

+0

謝謝我刪除了最後一個人,它的工作。 – user3116918

+0

最後一個是語法錯誤,因爲沒有* normal * if語句,否則不能與'value if condition'版本一起使用。 –