Amikor Gleamben egy értékre illesztünk mintát, biztosítanunk kell, hogy a minták a típus minden lehetséges értékét lefedjék, különben a kód nem fordul le.
Ezt a függvényt el kell utasítani, mert nem kezeli azt az esetet, amikor a lista üres:
pub fn get_first_element_or_crash(items: List(e)) -> e {
case items {
[item, ..] -> item
}
}
A Gleam-programokban a legtöbbször minden lehetséges esetet kezelni akarunk, de néhány programban, például prototípusokban és gyors szkriptekben, előfordulhat, hogy csak a happy pathra akarunk összpontosítani, és nem írunk kódot a többi esetre. Itt jön képbe a Gleam let assert konstrukciója.
A let assert állításokkal egy minta a típusnak csak néhány lehetséges értékére illeszkedhet, és ha a minta nem illeszkedik egy értékre, a program összeomlik. A let assert használatával a fenti függvényt így írhatjuk meg:
pub fn get_first_element_or_crash(items: List(e)) -> e {
let assert [item, ..] = items
item
}
A Gleam-könyvtáraknak soha nem szabad let assert állításokat használniuk, mert azok összeomlaszthatják a programot. Ehelyett a Result típust kell használniuk, és hagyniuk kell, hogy az alkalmazás fejlesztője döntse el, hogyan kezelje a hibákat.
Mikát, a rendezvényszervezőt előléptették a munkahelyén, és új feladatai részeként ő felel a rendezvények adatbázisáért. Gyorsan észrevette, hogy rengeteg adatot olyan formában tárolnak, amivel nehéz dolgozni, ezért összefogtok, hogy egy egyszeri szkripttel kitakarítsátok. Mivel a szkriptet csak egyszer fogjátok lefuttatni, és biztos vagy az adatok szerkezetében, úgy gondolod, hogy ez jó hely a Gleam let-állításainak a használatára.
Minden korábbi rendezvényhez tartozik egy lista az esemény során felmerült problémákról. Ezeket eredményként tárolták, de mindig az Error változatban. Készítsd el az extract_error függvényt, amely egy olyan eredményt vesz át, amelyről feltételezzük, hogy mindig Error, és visszaadja a benne lévő hibaértéket.
extract_error(Error("Not enough coffee"))
// -> "Not enough coffee"
A csapatnevek elé a „Team ” szó került, de erre nincs szükség. Készítsd el a remove_team_prefix függvényt, amely eltávolítja az előtagot a csapatnévből.
remove_team_prefix("Team Turtle")
// -> "Turtle"
Minden rendezvényt egy csapat szervez, és minden csapat egy régióhoz tartozik. Az adatbázisban egyetlen stringben tárolják őket, vesszővel elválasztva. Készítsd el a split_region_and_team függvényt, amely két stringből álló tuple-re bontja a stringet: az egyik a régió, a másik a csapat. A „Team ” előtagot el kell távolítani a csapatnévből.
split_region_and_team("East,Team Orange")
// -> #("East", "Orange")
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.