A expressão let serve para criar um âmbito local e é útil em algumas situações:
Podes fazer quase tudo dentro de uma expressão let, incluindo desestruturação (mais detalhes sobre isto em exercícios posteriores), mas não é possível definir um novo Tipo Personalizado nem um Sinónimo de Tipo.
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)
Recebeste um livro de receitas novo no teu aniversário e queres saber se a receita de lasanha que lá está é melhor do que a do teu livro de receitas preferido de momento. Neste exercício vais escrever algum código para te ajudar a cozinhar a lasanha do livro novo.
A tua colega de casa ainda está ocupada no escritório e quer saber a que horas a lasanha vai estar pronta, para garantir que volta a tempo.
Cria uma função para descobrir a que horas a lasanha vai estar pronta. Para que o código seja simples e expressivo, deves usar uma expressão let.
Define a função remainingTimeInMinutes, que recebe dois parâmetros e tem uma expressão let como corpo. O primeiro parâmetro é o número de camadas da lasanha, e o segundo é o número de minutos desde que começaste a cozinhar.
Define expectedMinutesInOven (na parte let da expressão let) para verificar quantos minutos a lasanha deve estar no forno. Segundo o livro de receitas, o tempo esperado no forno, em minutos, é 40:
expectedMinutesInOven
--> 40
Define preparationTimeInMinutes (na parte let da expressão let), que recebe o número de camadas da lasanha como parâmetro e devolve quantos minutos demora a preparar a lasanha, assumindo que cada camada demora 2 minutos a preparar.
preparationTimeInMinutes 3
--> 6
Devolve quantos minutos faltam até a lasanha estar pronta (na parte in da expressão let), que é a soma de preparationTimeInMinutes com expectedMinutesInOven, menos o número de minutos desde que começaste a cozinhar.
remainingTimeInMinutes 3 10
--> 6 + 40 - 10 = 36
Inscreve-te no Exercism para aprenderes e dominares Elm com 28 conceitos110 exercícios, e mentoria humana real, tudo grátis.