Hírlevél

Hírlevél

Tanulófeladat

Bevezetés

Nil

A Gleamben a Nil egy olyan típus, amelynek egyetlen értéke van, és ezt az értéket is Nil-nek hívják. Más nyelvek void típusához hasonló abban, hogy akkor használjuk, amikor egy függvénynek nincs más, megfelelőbb visszatérési értéke.

io.println("Hello, Joe!")
// -> Nil

A Gleam értékei nem viselkednek úgy, mint más nyelvek „nil-able” vagy „nullable” értékei. Egy érték csak akkor lehet Nil, ha a típusa Nil, és bármely más típusú érték soha nem lehet Nil.

IO

A legtöbb programozási nyelvhez hasonlóan a Gleamnek is vannak „mellékhatásai”, így a függvények olvashatják és módosíthatják a világ állapotát, miközben vissza is adhatnak egy értéket.

A gleam/io modul a Gleam szabványos könyvtárában függvényeket biztosít stringek konzolra írásához.

io.println("Hello, Joe!")
// Hello, Joe!
// -> Nil

Más csomagok más IO-függvényeket is biztosíthatnak, például a simplifile, egy csomag, amely fájlok olvasásához és írásához biztosít függvényeket.

simplifile.read("favourite-colour.txt")
// -> Ok("Pink\n")

Utasítások

Boris nagy modellvasút-rajongó, és úgy döntött, hogy megosztja a szenvedélyét a világgal: hírlevelet indít. Először a hírlevél első számát küldi el azoknak a barátainak és ismerőseinek, akik osztoznak a hobbijában; az e-mail-címeiket egy szövegfájlban tárolja.

Tipp: a fájlműveletekhez használd a simplifile modult.

1. E-mail-címek beolvasása fájlból

Valósítsd meg a read_emails függvényt. Ez egy olyan szövegfájl elérési útját kapja, amelyben soronként egy-egy e-mail-cím szerepel, és visszaadja a fájlban lévő e-mail-címek listáját.

read_emails("/home/my_user/documents/model_train_friends_emails.txt")
// -> Ok(["rick@example.com", "choochoo42@example.com", "anna@example.com"])

2. Naplófájl létrehozása íráshoz

Az e-mail küldése olyan feladat, amely sok kiszámíthatatlan ok miatt meghiúsulhat, például egy elírt e-mail-cím vagy átmeneti hálózati probléma miatt. Hogy biztos lehess benne, hogy az e-maileket újra el tudd küldeni minden barátodnak anélkül, hogy duplikátumokat küldenél, naplóznod kell azokat az e-mail-címeket, amelyek már megkapták az e-mailt. Ehhez egy naplófájlra lesz szükséged.

Valósítsd meg a create_log_file függvényt. Ez egy fájl elérési útját kapja, és létrehoz egy új, üres fájlt azon a helyen.

create_log_file("/home/my_user/documents/newsletter_issue1_log.txt")
// -> Ok(Nil)

3. Elküldött e-mail naplózása

Valósítsd meg a log_sent_email függvényt. Ez egy naplófájl elérési útját és egy stringet kap, amely az e-mail-címet tartalmazza. Az e-mail-címet kiírja a fájlba, utána pedig egy sortörést.

log_sent_email(
  "/home/my_user/documents/newsletter_issue1_log.txt",
  "joe@example.com",
)
// -> Ok(Nil)

4. A hírlevél elküldése

Most, hogy megvan az e-mail-küldési folyamat minden építőeleme, egyetlen függvényben kell összekapcsolnod őket.

Valósítsd meg a send_newsletter függvényt. Ez az e-mail-címeket tartalmazó fájl elérési útját, egy naplófájl elérési útját és egy névtelen függvényt kap, amely elküld egy e-mailt egy adott e-mail-címre.

Be kell olvasnia az összes e-mail-címet a megadott fájlból, és meg kell kísérelnie e-mailt küldeni mindegyikre. Ha az e-mailt küldő névtelen függvény Ok értéket ad vissza, írd ki az e-mail-címet a naplófájlba. Ügyelj rá, hogy ezt rögtön az e-mail elküldése után megtedd.

send_newsletter(
  "model_train_friends_emails.txt",
  "newsletter_issue1_log.txt",
  send_email,
)
// -> Ok(Nil)
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Gleam Exercism

Készen állsz elkezdeni a(z) Hírlevél 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.