A Gleamben kétféle szám létezik: egész számok és tizedes törtek.
Az egész számok egész értékű számok.
let integer = 3
// -> 3
A Gleamben számos operátor működik egész számokkal.
1 + 1 // -> 2
5 - 1 // -> 4
5 / 2 // -> 2
3 * 3 // -> 9
5 % 2 // -> 1
2 > 1 // -> True
2 < 1 // -> False
2 >= 1 // -> True
2 <= 1 // -> False
A tizedes törtek olyan számok, amelyekben a tizedesjel után egy vagy több számjegy áll.
let float = 3.45
// -> 3.45
A tizedes törteknek is megvan a maguk operátorkészlete.
1.0 +. 1.4 // -> 2.4
5.0 -. 1.5 // -> 3.5
5.0 /. 2.0 // -> 2.5
3.0 *. 3.1 // -> 9.3
2.0 >. 1.0 // -> True
2.0 <. 1.0 // -> False
2.0 >=. 1.0 // -> True
2.0 <=. 1.0 // -> False
A Gleam-kód modulokba szerveződik, és minden fájl egy-egy Gleam-modul.
Eddig a pub fn szintaxissal írtunk függvényeket, ami olyan függvényt definiál, amely a többi modul számára is nyilvánosan elérhető. A fn-nel definiált függvények csak abban a modulban érhetők el, amelyben létrehoztuk őket, más modulokból nem használhatók.
// This function is public
pub fn add(x, y) {
x + y
}
// This function is private
fn subtract(x, y) {
x - y
}
A Gleam-moduloknak nevük van, és a név a src vagy test könyvtáron belüli fájlútvonalukon alapul.
Például egy src\geometry\rectangle.gleam fájlban (Windowson) vagy src/geometry/rectangle.gleam fájlban (UNIX-szerű operációs rendszereken) definiált modul neve geometry/rectangle lenne.
A más modulokban definiált függvényeket importokon keresztül érjük el. Amikor importálunk egy modult, az általa hozzáférhetővé tett összes függvény elérhetővé válik. Az viszont, hogy hogyan érhetők el, attól függ, hogyan importáltuk a modult.
A minősített importok az alapértelmezettek, és egy ilyen modulon belüli függvényt (például a map függvényt a gleam/list modulban) úgy érünk el, hogy a modul nevét előtagként írjuk elé (list.map).
// Import the int module
import gleam/int
pub fn run(x: Int) -> String {
// Use the to_string function from the int module
int.to_string(x)
}
Alapértelmezés szerint a modulra hivatkozó név a modulnév utolsó része, ebben az esetben int, de ezt az as kulcsszóval megváltoztathatjuk.
// Import the int module and refer to it as i
import gleam/int as i
pub fn run(x: Int) -> String {
i.to_string(x)
}
A minősítetlen importok közvetlen hozzáférést tesznek lehetővé a modul hozzáférhetővé tett függvényeihez, előtag nélkül.
// Import the to_string function from the int module
import gleam/int.{to_string}
pub fn run(x: Int) -> String {
to_string(x)
}
A minősített importokat érdemes előnyben részesíteni, mert világosabbá teszik az olvasó számára, hogy honnan származik egy függvény, és segítenek elkerülni a névütközéseket.
A Gleamnek gazdag és jól dokumentált standard könyvtára van. A dokumentáció online érhető el a hexdocs.pm/gleam_stdlib oldalon. Mentsd el valahova ezt a linket, sokat fogod használni!
A legtöbb beépített adattípushoz tartozik egy-egy modul, amely függvényeket kínál az adott adattípussal való munkához, például az egész számokhoz a gleam/int modul, a stringekhez a gleam/string modul, a listákhoz a gleam/list modul, és így tovább.
Ebben a feladatban olyan kódot írsz, amely segít Betty's Bike Shopnak, egy online kerékpár- és alkatrészboltnak. Három részfeladatot kapsz, amelyek célja, hogy helyesen jelenítsd meg a kerékpárok és alkatrészek árait a weboldalon.
pence_to_pounds függvénytA kollégád már megírta a modul vázát, a hiányos pence_to_pounds és pounds_to_string függvényeket.
Ő azonban elfelejtette exportálni a pence_to_pounds függvényt, ezért az jelenleg más modulok vagy a tesztkészlet számára nem látható.
Exportáld a pence_to_pounds függvényt.
Jelenleg az árat egész számú penny formájában tároljuk (a bolt az Egyesült Királyságban működik).
A weboldalon fontban szeretnénk megjeleníteni az árat, ahol 1,00 font 100 pennynek felel meg.
Az első részfeladatod, hogy megvalósítsd a pence_to_pounds függvényt, amely egy Int típusú pennyösszeget kap, és átváltja a neki megfelelő fontértékre Float típusként.
A függvényhez típusannotációkat is hozzá kell adnod.
pence_to_pounds(106)
// -> 1.06
Mivel Betty kerékpárjait fontban árulják, az árakat a „£” szimbólummal kell megjeleníteni.
A második részfeladatod tehát, hogy megvalósítsd a pounds_to_string függvényt, amely egy Float típusú fontösszeget kap, és az árat String típusúként adja vissza úgy, hogy a font szimbólumot az elejére fűzi.
A használatuk előtt importálnod kell a gleam/float és a gleam/string modulokat.
A pounds_to_string típusannotációját is meg kell adnod.
pounds_to_string(1.06)
// -> "£1.06"
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.