A kulcsszólisták kulcs-érték adatszerkezetek.
[month: "April", year: 2018]
A kulcsszólisták {key, value} tuple-ok listái, és ilyen formában is leírhatók, de a rövidebb szintaxist szélesebb körben használják.
[month: "April"] == [{:month, "April"}]
# => true
A kulcsszólistában a kulcsoknak atomoknak kell lenniük, de az értékek bármik lehetnek. Egy kulcs többször is használható. A kulcs-érték párok a kulcsszólistában sorrendben vannak.
A kulcsszólistákkal ugyanazokkal a megközelítésekkel dolgozhatsz, mint a listákkal, vagy használhatod a Keyword modult.
Egy elegáns étterem menedzsere vagy, amelynek tekintélyes borospincéje van. A vendégeid közül sokan igényes borrajongók. Nem könnyű feladat megtalálni a megfelelő palack bort egy adott vendég számára.
Technikához értő étteremtulajdonosként úgy döntöttél, hogy felgyorsítod a borválasztás folyamatát: írsz egy alkalmazást, amellyel a vendégek a saját preferenciáik szerint szűrhetik a boraidat.
Az alkalmazás üdvözlőképernyőjén az egyes borszínek rövid magyarázatát szeretnéd megjeleníteni.
Valósítsd meg a WineCellar.explain_colors/0 függvényt. Nem vár argumentumot, és egy kulcsszólistát ad vissza: a kulcsok a borszínek, az értékek pedig a magyarázatok.
| Szín | Magyarázat |
|---|---|
:white |
Fermented without skin contact. |
:red |
Fermented with skin contact using dark-colored grapes. |
:rose |
Fermented with some skin contact, but not enough to qualify as a red wine. |
Egy palack bort egy háromelemű tuple képvisel: szőlőfajta, évjárat és származási ország. A borokat borszínenként, kulcsszólistában tároljuk.
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
]
Valósítsd meg a WineCellar.filter/3 függvényt. Bemenetként egy borokból álló kulcsszólistát, egy színatomot és egy opciókat tartalmazó kulcsszólistát kap, amelynek alapértéke []. A függvény egy adott színű borokból álló listát adjon vissza.
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"}
# ]
Bővítsd a WineCellar.filter/3 függvényt. Ha megkapja a :year opciót, a függvény egy adott szín adott évjáratú borainak listáját adja vissza.
Használd a már megvalósított WineCellar.filter_by_year/2 függvényt. Argumentumként egy borokból álló listát és egy évjáratot kap, és egy adott évjárat borainak listáját adja vissza.
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"}
# ]
Bővítsd a WineCellar.filter/3 függvényt. Ha megkapja a :country opciót, a függvény egy adott szín adott országból származó borainak listáját adja vissza.
Használd a már megvalósított WineCellar.filter_by_country/2 függvényt. Argumentumként egy borokból álló listát és egy országot kap, és egy adott országból származó borok listáját adja vissza.
Ügyelj rá, hogy a függvény akkor is működjön, ha egyszerre kapja a :year és a :country opciót, bármilyen sorrendben.
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"
)
# => []
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Elixir nyelvet 58 fogalom168 feladat segítségével, valódi emberi mentorálással, mindez ingyen.