Η έκφραση let (έστω) χρησιμοποιείται για να δημιουργεί μια τοπική εμβέλεια και είναι χρήσιμη σε μερικές περιπτώσεις:
Μπορείς να κάνεις τα περισσότερα πράγματα μέσα σε μια έκφραση let, συμπεριλαμβανομένης της αποδόμησης (περισσότερες λεπτομέρειες σε επόμενες ασκήσεις), αλλά δεν είναι δυνατό να ορίσεις έναν νέο Custom Type ή Type Alias.
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)
Στα γενέθλιά σου πήρες ένα καινούργιο βιβλίο μαγειρικής και θέλεις να ανακαλύψεις αν η συνταγή για λαζάνια που έχει μέσα είναι καλύτερη από το αγαπημένο σου βιβλίο μαγειρικής. Σε αυτή την άσκηση θα γράψεις κώδικα για να σε βοηθήσει να μαγειρέψεις τα λαζάνια από το καινούργιο βιβλίο μαγειρικής.
Η συγκάτοικός σου είναι ακόμα απασχολημένη στο γραφείο και θέλει να μάθει τι ώρα θα είναι έτοιμα τα λαζάνια, ώστε να βεβαιωθεί ότι θα προλάβει να γυρίσει στην ώρα της.
Δημιούργησε μια συνάρτηση που να υπολογίζει τι ώρα θα είναι έτοιμα τα λαζάνια. Για να είναι ο κώδικας απλός και εκφραστικός, θα πρέπει να χρησιμοποιήσεις μια έκφραση let (έστω).
Όρισε τη συνάρτηση remainingTimeInMinutes που παίρνει δύο παραμέτρους και έχει ως σώμα της μια έκφραση let. Η πρώτη παράμετρος είναι ο αριθμός των στρώσεων στα λαζάνια και η δεύτερη παράμετρος είναι ο αριθμός των λεπτών από τότε που άρχισες να μαγειρεύεις.
Όρισε το expectedMinutesInOven (στο τμήμα let της έκφρασης let) για να ελέγξετε πόσα λεπτά πρέπει να είναι τα λαζάνια στον φούρνο. Σύμφωνα με το βιβλίο μαγειρικής, ο αναμενόμενος χρόνος στον φούρνο, σε λεπτά, είναι 40:
expectedMinutesInOven
--> 40
Όρισε το preparationTimeInMinutes (στο τμήμα let της έκφρασης let) που παίρνει ως παράμετρο τον αριθμό των στρώσεων στα λαζάνια και επιστρέφει πόσα λεπτά χρειάζονται για την προετοιμασία των λαζανιών, υποθέτοντας ότι κάθε στρώση χρειάζεται 2 λεπτά για να ετοιμαστεί.
preparationTimeInMinutes 3
--> 6
Επίστρεψε πόσα λεπτά απομένουν μέχρι να είναι έτοιμα τα λαζάνια (στο τμήμα in της έκφρασης let), που είναι το άθροισμα του preparationTimeInMinutes και του expectedMinutesInOven μείον τον αριθμό των λεπτών από τότε που άρχισες να μαγειρεύεις.
remainingTimeInMinutes 3 10
--> 6 + 40 - 10 = 36
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Elm με 28 έννοιες110 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.