你是一間高級餐廳的經理,餐廳裡有一座規模不小的酒窖。你的顧客當中有許多是要求很高的葡萄酒愛好者。要為某位顧客找到合適的那瓶酒,可不是件容易的事。
身為一位熟悉科技的餐廳老闆,你決定寫一個應用程式,讓客人能依自己的偏好篩選你的葡萄酒,藉此加快選酒的流程。
在應用程式的歡迎畫面上,你想顯示每種葡萄酒顏色的簡短說明。
實作WineCellar.explain_colors/0函式。它不接受任何引數,並回傳一個關鍵字清單,以葡萄酒顏色為鍵、說明為值。
| 顏色 | 說明 |
|---|---|
:white |
不經浸皮發酵。 |
:red |
使用深色葡萄,經浸皮發酵。 |
:rose |
經過部分浸皮發酵,但程度不足以稱為紅酒。 |
一瓶葡萄酒以葡萄品種、年份和原產國組成的三元組表示。這些葡萄酒會依顏色存放在關鍵字清單中。
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
]
實作WineCellar.filter/3函式。它應該接受一份葡萄酒的關鍵字清單、一個顏色原子,以及一份選項的關鍵字清單,預設值為[]。這個函式應回傳指定顏色的葡萄酒陣列。
WineCellar.filter(
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
],
:white
)
# => [
# {"Chardonnay", 2015, "Italy"},
# {"Pinot grigio", 2017, "Germany"}
# ]
擴充WineCellar.filter/3函式。當傳入:year選項時,這個函式應回傳指定顏色且來自指定年份的葡萄酒陣列。
請使用已經實作好的WineCellar.filter_by_year/2函式。它接受一份葡萄酒陣列和一個年份作為引數,並回傳指定年份的葡萄酒陣列。
WineCellar.filter(
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
],
:white,
year: 2015
)
# => [
# {"Chardonnay", 2015, "Italy"}
# ]
擴充WineCellar.filter/3函式。當傳入:country選項時,這個函式應回傳指定顏色且來自指定國家的葡萄酒陣列。
請使用已經實作好的WineCellar.filter_by_country/2函式。它接受一份葡萄酒陣列和一個國家作為引數,並回傳指定國家的葡萄酒陣列。
請確保這個函式在同時傳入:year和:country選項時能正常運作,而且不限順序。
WineCellar.filter(
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
],
:white,
year: 2015,
country: "Germany"
)
# => []