Kurzusok
/
Elm
Elm
/
Feladatok
/
Valentin-nap
Valentin-nap

Valentin-nap

Tanulófeladat

Bevezetés

Custom Types

Az Elm Custom Type-jai rögzített számú, elnevezett esetet jelölnek. Minden érték pontosan az egyik elnevezett esetnek felel meg.

Egy Custom Type-ot a type kulcsszóval definiálsz, és nagyon kevés szintaxist igényel. Ez az Elm programozás egyik legfontosabb technikája, amely arra szolgál, hogy a kódban lehetséges értékek pontosan megfeleljenek a valós életben érvényes értékeknek. Így nem marad hely az érvénytelen adatoknak, és a lehetetlen állapotokat lehetetlenné teszi a kódban.

type Season
    = Spring
    | Summer
    | Autumn
    | Winter

Egy custom type minden esetéhez tartozhat opcionálisan adat, és a különböző esetekhez különböző típusú adat tartozhat. Ha egyik esethez sem tartozik adat, a diszkriminált unió hasonló ahhoz, amit más nyelvek általában felsorolásnak (vagy enumnak) neveznek.

type FlexibleNumber
    = Integer Int
    | Float Float
    | Invalid

Egy adott eset értékét úgy hozhatod létre, hogy a nevére hivatkozol (Spring), ha az ugyanabban a modulban van definiálva, vagy az import SeasonModule exposing (Season(..)) formájú szintaxissal van importálva, illetve a teljesen minősített nevére hivatkozol (Season.Spring), ha az import SeasonModule exposing (Season) formájú szintaxissal van importálva.

integerTwo = Integer 2
invalid = FlexibleNumber.Invalid

A custom type-ok az Elm minden más eleméhez hasonlóan strukturális egyenlőséggel rendelkeznek, ami azt jelenti, hogy két érték, amely ugyanahhoz az esethez tartozik és ugyanazzal az (opcionális) adattal rendelkezik, egyenértékű.

A custom type-okkal való munka előnyben részesített módja a mintailesztés:

let describe flexibleNumber =
    case flexibleNumber of
        Integer i ->
            "Integer: " ++ fromInt(i)

        Float f ->
            "Float: " ++ fromFloat(f)

        Invalid   ->
            "Invalid"

Utasítások

Ebben a feladatban Valentin-nap van, és te meg a párod valami szép közös programot terveztek. A párodnak rengeteg ötlete van, és most arra kér, hogy értékeld ezeket az ötleteket, hogy kiválasszátok, mihez kezdjetek.

A párod a következő ötleteket javasolja:

  • Társasjáték
  • Kikapcsolódás
  • Filmnézés
  • Étterembe menni

Hat részfeladat segít kiválasztani a Valentin-napi programot.

1. Definiáld az Approval-t

A párod minden javasolt ötletére három lehetőség egyikével válaszolsz: igen, nem vagy talán.

Definiáld az Approval Custom Type-ot, hogy ezeket a lehetőségeket a következő három esettel ábrázolja: Yes, No és Maybe.

2. Definiáld a konyhákat

A párod két lehetséges éttermet választott ki: az egyik a koreai konyhára épül, a másik a török konyhára.

Definiáld a Cuisine Custom Type-ot, hogy ezeket a konyhákat a következő két esettel ábrázolja: Korean és Turkish.

3. Definiáld a filmműfajokat

Rengeteg film közül lehet választani, ezért hogy szűkítse a kört, a párod a műfajukat is felsorolja.

Definiáld a Genre Custom Type-ot, hogy a következő műfajokat esetekként ábrázolja: Crime, Horror, Romance és Thriller.

4. Definiáld a tevékenységet

Ahogy már említettük, a párod öt különböző tevékenységgel állt elő: társasjáték, kikapcsolódás, filmnézés és étterembe menni.

Definiáld az Activity Custom Type-ot, hogy ezeket a tevékenységtípusokat ábrázolja:

  • BoardGame: nincs hozzá tartozó adat.
  • Chill: nincs hozzá tartozó adat.
  • Movie: a Genre a hozzá tartozó adata.
  • Restaurant: a Cuisine a hozzá tartozó adata.

5. Értékeld a tevékenységet

Végül készen állsz, hogy értékeld a párod ötleteit. Így érzel a párod ötleteiről:

  • Társasjáték: nem.
  • Kikapcsolódás: nem.
  • Filmnézés: igen, ha romantikus film; egyébként nem.
  • Étterembe menni: igen, ha a konyha Korean, talán, ha Turkish.

Készíts egy rateActivity nevű függvényt, amely átvesz egy Activity értéket, és a fenti érzések alapján visszaadja az Approval értéket:

rateActivity (Restaurant Turkish)
-- => Maybe
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Elm Exercism

Készen állsz elkezdeni a(z) Valentin-nap feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Elm nyelvet 28 fogalom110 feladat segítségével, valódi emberi mentorálással, mindez ingyen.