Kurzusok
/
Gleam
Gleam
/
Feladatok
/
Kincsesláda
Kincsesláda

Kincsesláda

Tanulófeladat

Bevezetés

Generikusok

Egy típus akkor generikus típus, ha egy típusparaméter segítségével bármilyen típusú értéket tartalmazhat.

Például ennek a Box típusnak az a a típusparamétere (kisbetűvel írva).

pub type Box(a) {
  Box(a)
}

Az a típusparaméter bármilyen típus helyőrzője, így a Box használható stringekkel, int-ekkel vagy bármilyen más típussal.

Box("Hello, Joe!") // The type is Box(String)

Box(42) // The type is Box(Int)

Egy típusnak több típusparamétere is lehet, ezeket vesszővel választjuk el.

pub type Pair(a, b) {
  Pair(a, b)
}

Generikus függvények

A típusparamétereket a függvények argumentumaiban is használhatjuk.

Ez a függvény egy a típusú értéket kap, és kétszer meghív egy olyan függvényt, amely egy a típusú értéket kap és egy b típusút ad vissza.

pub fn twice(value: a, f: fn(a) -> b) -> b {
  f(value)
  f(value)
}
// The type is fn(String, fn(String) -> Nil) -> Nil
twice("Hello, Joe!", io.println)

Utasítások

Ebben a feladatban egy generikus (varázslatos!) TreasureChest típust írsz, amelyben kincseket tárolhatsz.

1. Definiáld a TreasureChest generikus egyedi típust

Definiálj egy TreasureChest egyedi típust egyetlen variánssal.

A variánsnak legyen egy társított String értéke, amely a kincsesláda jelszavát tárolja majd.

A variánsnak emellett legyen egy társított generikus értéke is, amely a kincset tárolja majd. Ez az érték generikus, így a kincs bármi lehet.

2. Definiáld az UnlockResult típust

Definiálj egy UnlockResult egyedi típust két variánssal.

Az első variáns az Unlocked legyen, és tartalmazzon egy generikus értéket, amely a kincset tárolja majd.

A második variáns a WrongPassword legyen, amely nem tárol értéket.

3. Definiáld a get_treasure függvényt

A függvény két paramétert vár:

  • egy TreasureChest generikus egyedi típust
  • egy String értéket (a jelszó kipróbálásához)

A függvény összehasonlítja a megadott jelszót a TreasureChest-ben tárolt String értékkel.

A függvény egy UnlockResult értéket ad vissza.

Ha a jelszavak megegyeznek, akkor az Unlocked variánst add vissza a TreasureChest-ben lévő generikus értékkel (a kincset!).

Ha a jelszavak nem egyeznek meg, akkor a WrongPassword variánst add vissza.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Gleam Exercism

Készen állsz elkezdeni a(z) Kincsesláda feladatot?

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