Kurzusok
/
Gleam
Gleam
/
Feladatok
/
Betty kerékpárboltja
Betty kerékpárboltja

Betty kerékpárboltja

Tanulófeladat

Bevezetés

Egész számok

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

Tizedes törtek

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

Modulok

Modulok

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.

Függvények importálása más modulokból

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.

Standard könyvtár

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.

Utasítások

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.

1. Exportáld a pence_to_pounds függvényt

A 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.

2. Váltsd át a pennyt fontra

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

3. Formázd az árat a weboldali megjelenítéshez

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"
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Gleam Exercism

Készen állsz elkezdeni a(z) Betty kerékpárboltja 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.