Kurzusok
/
Elixir
Elixir
/
Feladatok
/
Új útlevél
Új útlevél

Új útlevél

Tanulófeladat

Bevezetés

With

A with speciális forma lehetővé teszi, hogy egy sor potenciálisan hibázó lépés „happy path”-jára összpontosíts, a hibák kezelését pedig hagyd későbbre.

with {:ok, id} <- get_id(username),
     {:ok, avatar} <- fetch_avatar(id),
     {:ok, image_type} <- check_valid_image_type(avatar) do
  {:ok, image_type, avatar}
else
  :not_found ->
    {:error, "invalid username"}

  {:error, "not an image"} ->
    {:error, "avatar associated to #{username} is not an image"}

  err ->
    err
end

Minden lépésnél, ha egy ág illeszkedik, a lánc mindaddig folytatódik, amíg a do blokk végre nem hajtódik. Ha egy illesztés meghiúsul, a lánc leáll, és a nem illeszkedő ág értékével tér vissza. Arra is van lehetőséged, hogy egy else blokkal elkapd a sikertelen illesztéseket, és módosítsd a visszatérési értéket.

Utasítások

Mindjárt lejár az útleveled, ezért be kell néznod a városi hivatalba, hogy meghosszabbítsd. Korábbi tapasztalatból tudod, hogy a városi hivatalod ügyintézése nem éppen a legegyszerűbb, ezért elhatározod, hogy mindig igyekszel „a happy pathra összpontosítani”.

Kinyomtatod az új útlevélhez szükséges nyomtatványt, kitöltöd, beugrasz az autóba, körbemész a háztömb körül, parkolsz, és elindulsz a hivatalba.

A következő részfeladatok mindegyikéhez a get_new_passport/3 függvényt kell megvalósítanod és bővítened.

1. Juss be az épületbe

Kiderül, hogy az épület csak délután van nyitva, és nem is minden nap ugyanakkor.

Hívd meg az enter_building/1 függvényt az aktuális idővel (amelyet a get_new_passport/3 első argumentumaként kapsz). Ha az épület nyitva van, a függvény egy :ok atomot és egy később szükséges időbélyeget tartalmazó tuple-t ad vissza, ellenkező esetben egy :error atomot és egy üzenetet tartalmazó tuple-t. Egyelőre a happy path visszaadhatja a :ok tuple-t.

Ha :error tuple-t kapsz, az else blokkal add vissza.

2. Menj az információs pulthoz, és derítsd ki, melyik ablakhoz kell menned

Az információs pult híres arról, hogy hosszú kávészüneteket tart. Ha olyan szerencsés vagy, hogy találsz ott valakit, ad neked egy útmutatót, amely elmagyarázza, hogy a születési dátumodtól függően melyik ablakhoz kell menned.

Hívd meg a find_counter_information/1 függvényt az aktuális idővel. Vagy egy :ok atomot és egy útmutatót tartalmazó tuple-t kapsz, ahol az útmutatót egy anonim függvény képviseli, vagy egy :coffee_break atomot és további utasításokat tartalmazó tuple-t. A happy path során, amikor megkapod az útmutatót, alkalmazd azt a születésnapodra (a get_new_passport/3 második argumentuma). Ez visszaadja annak az ablaknak a számát, ahová menned kell. Adj vissza egy :ok tuple-t ezzel az ablakszámmal.

Ha :coffee_break üzenetet kapsz, adj vissza egy :retry atomot és egy NaiveDateTime-ot tartalmazó tuple-t, amely az aktuális idő után 15 perccel későbbi időpontra mutat. Mint korábban, ha :error tuple-t kapsz, add vissza.

3. Menj az ablakhoz, és pecsételtesd le a nyomtatványod

Valamilyen oknál fogva a különböző ablakokban más színű nyomtatványokra van szükség. Persze te azt nyomtattad ki, amelyiket először megtaláltad a weboldalon, ezért a happy pathra összpontosítasz, és a legjobbat reméled.

Hívd meg a stamp_form/3 függvényt a bejáratnál kapott időbélyeggel, az ablakkal és a hozott nyomtatvánnyal (a get_new_passport/3 utolsó argumentuma). Vagy egy :ok atomot és egy ellenőrző összeget tartalmazó tuple-t kapsz, amelyet majd az útlevélszámod ellenőrzésére használnak, vagy egy :error atomot és egy üzenetet tartalmazó tuple-t. A happy path adjon vissza egy :ok tuple-t az ellenőrző összeggel. Ha :error tuple-t kapsz, add vissza.

4. Vedd át az új útleveled

Végre minden szükséges dokumentum a kezedben van.

Hívd meg a get_new_passport_number/3 függvényt az időbélyeggel, az ablakkal és a korábban kapott ellenőrző összeggel. Megkapod a végleges útlevélszámodat tartalmazó stringet, és már nem marad más hátra, mint hogy visszaadd ezt a stringet egy :ok atomot tartalmazó tuple-ben, és hazamenj.

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

Készen állsz elkezdeni a(z) Új útlevél feladatot?

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.