A let kifejezéssel helyi scope-ot hozhatsz létre, és néhány helyzetben hasznos lehet:
Egy let kifejezésen belül a legtöbb dolgot megteheted, például destrukturálhatsz is (erről bővebben a későbbi feladatokban olvashatsz), de új egyedi típust vagy típusaliast nem hozhatsz létre.
let
cube x = x * x * x
in
cube a + cube b + cube c
beginWithPattern : Size -> Padding -> Pattern -> GameOfLife
beginWithPattern minimumSize padding pattern =
let
size = calculateSize minimumSize padding pattern
center = Size.center size
centeredPattern = Pattern.centerAt center pattern
dimensions = { width = size, height = size }
deadCells = Matrix.create dimensions Dead
in
GameOfLife (bringPatternToLife deadCells centeredPattern)
A születésnapodra egy új szakácskönyvet kaptál, és szeretnéd kideríteni, hogy a benne lévő lasagne-recept jobb-e, mint a jelenlegi kedvenc szakácskönyvedé. Ebben a feladatban kódot írsz majd, hogy segíts megfőzni a lasagnét az új szakácskönyvből.
A lakótársad még mindig elfoglalt az irodában, és szeretné tudni, mikorra készül el a lasagne, hogy biztosan időben hazaérjen.
Készíts egy függvényt, amely kiszámolja, hogy mikorra készül el a lasagne. Ahhoz, hogy a kód egyszerű és kifejező legyen, let kifejezést használj.
Definiáld a remainingTimeInMinutes függvényt, amely két paramétert vár, és a törzse egy let kifejezés. Az első paraméter a lasagne rétegeinek a száma, a második pedig az, hogy hány perc telt el azóta, hogy elkezdtél főzni.
Definiáld az expectedMinutesInOven-t (a let kifejezés let részében), amely megmutatja, hány percig kell a lasagnének a sütőben lennie. A szakácskönyv szerint a várt sütési idő 40 perc:
expectedMinutesInOven
--> 40
Definiáld a preparationTimeInMinutes függvényt (a let kifejezés let részében), amely paraméterként a lasagne rétegeinek a számát kapja, és visszaadja, hány percig tart a lasagne előkészítése, feltéve, hogy minden réteg elkészítése 2 percet vesz igénybe.
preparationTimeInMinutes 3
--> 6
Add vissza, hány perc van hátra a lasagne elkészültéig (a let kifejezés in részében): ez a preparationTimeInMinutes és az expectedMinutesInOven összege, csökkentve azzal a percszámmal, amely azóta telt el, hogy elkezdtél főzni.
remainingTimeInMinutes 3 10
--> 6 + 40 - 10 = 36
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Elm nyelvet 28 fogalom110 feladat segítségével, valódi emberi mentorálással, mindez ingyen.