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.
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")
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.
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"])
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)
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)
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)
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.