Der let-Ausdruck erzeugt einen lokalen Gültigkeitsbereich und ist in einigen Situationen nützlich:
In einem let-Ausdruck kannst du fast alles tun, auch Destrukturierung (mehr dazu in späteren Übungen). Es ist aber nicht möglich, einen neuen Custom Type oder Type Alias zu definieren.
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)
Du hast zum Geburtstag ein neues Kochbuch geschenkt bekommen und willst herausfinden, ob das Lasagne-Rezept darin besser ist als das in deinem aktuellen Lieblingskochbuch. In dieser Übung schreibst du etwas Code, der dir hilft, die Lasagne aus dem neuen Kochbuch zu kochen.
Deine Mitbewohnerin ist noch im Büro beschäftigt und möchte wissen, wann die Lasagne fertig sein wird, damit sie rechtzeitig zurück sein kann.
Schreibe eine Funktion, die herausfindet, wann die Lasagne fertig sein wird. Damit der Code einfach und ausdrucksstark bleibt, solltest du einen let-Ausdruck verwenden.
Definiere die Funktion remainingTimeInMinutes, die zwei Parameter entgegennimmt und als Körper einen let-Ausdruck hat. Der erste Parameter ist die Anzahl der Schichten in der Lasagne, und der zweite Parameter ist die Anzahl der Minuten, die seit dem Start des Kochens vergangen sind.
Definiere expectedMinutesInOven (im let-Teil des let-Ausdrucks), um zu prüfen, wie viele Minuten die Lasagne im Ofen bleiben soll. Laut dem Kochbuch beträgt die erwartete Backzeit in Minuten 40:
expectedMinutesInOven
--> 40
Definiere preparationTimeInMinutes (im let-Teil des let-Ausdrucks), die die Anzahl der Schichten in der Lasagne als Parameter entgegennimmt und zurückgibt, wie viele Minuten die Vorbereitung der Lasagne dauert, wenn man davon ausgeht, dass jede Schicht 2 Minuten zum Vorbereiten braucht.
preparationTimeInMinutes 3
--> 6
Gib zurück, wie viele Minuten noch bleiben, bis die Lasagne fertig ist (im in-Teil des let-Ausdrucks). Das ist die Summe aus preparationTimeInMinutes und expectedMinutesInOven, abzüglich der Anzahl der Minuten, die seit dem Start des Kochens vergangen sind.
remainingTimeInMinutes 3 10
--> 6 + 40 - 10 = 36
Melde dich bei Exercism an, um Elm mit 28 Konzepte110 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.