Em Elm, um Array é um vetor: uma coleção imutável e rápida de zero ou mais valores do mesmo tipo.
Ao contrário de List, que é importado por omissão, o módulo Array tem de ser importado explicitamente, com import Array ou algo semelhante.
Podes definir um array da seguinte forma:
import Array exposing (Array)
empty : Array Char
empty = Array.empty
singleValue = Array.fromList [ 5 ] --> Array Int
repeatSingleValue = Array.repeat 2 5 --> Array.fromList [ 5, 5 ]
initialiseFromIndex = Array.initialise 3 (\index -> index * 2) --> Array.fromList [ 0, 2, 4 ]
initialisefromList = Array.fromList [ "a", "b", "c" ] --> Array.fromList [ "a", "b", "c" ]
Podes adicionar elementos a um array com Array.push:
twoToFour = Array.fromList [ 2, 3, 4 ]
oneToFour = Array.push 1 twoToFour --> Array.fromList [ 1, 2, 3, 4 ]
Podes obter um elemento de um array com Array.get:
sixSeven = Array.fromList [ 6, 7 ]
Array.get 0 sixSeven --> Just 6
Podes alterar um elemento de um array com Array.set:
sixSeven = Array.fromList [ 6, 7 ]
Array.set 1 8 sixSeven --> Array.fromList [ 6, 8 ]
Os arrays são manipulados por funções definidas no módulo Array.
oneTwo = Array.fromList [ 1, 2 ]
Array.length oneTwo --> 2
Como aspirante a maga, a Elyse precisa de praticar o básico. Tem um baralho de cartas que quer manipular.
Para facilitar um pouco as coisas, só usa as cartas de 1 a 10.
Implementa a função getCard, que devolve a carta na posição index do baralho dado. Se o índice não estiver no baralho, devolve Nothing.
getCard 2 ( Array.fromList [ 1, 2, 4, 1 ] )
--> Just 4
getCard 6 ( Array.fromList [ 1, 2, 4, 1 ] )
--> Nothing
Implementa a função setCard, que devolve um baralho com a carta na posição index alterada para a nova carta fornecida.
Se o index não estiver no baralho, devolve o baralho original.
setCard 2 6 ( Array.fromList [ 1, 2, 4, 1 ] )
--> Array.fromList [ 1, 2, 6, 1 ]
setCard 6 6 ( Array.fromList [ 1, 2, 4, 1 ] )
--> Array.fromList [ 1, 2, 4, 1 ]
Implementa a função addCard, que devolve um baralho com a nova carta adicionada.
addCard 8 ( Array.fromList [ 5, 9, 7, 1 ] )
--> Array.fromList [ 5, 9, 7, 1, 8 ]
Implementa a função removeCard, que devolve um baralho com a carta na posição index removida.
Se o index dado não for um índice válido no baralho, devolve o baralho original.
removeCard 2 ( Array.fromList [ 3, 2, 6, 4, 8 ] )
--> Array.fromList [ 3, 2, 4, 8 ]
removeCard 2 ( Array.fromList [ 3, 2 ] )
--> Array.fromList [ 3, 2 ]
Implementa a função evenCardCount, que conta o número de cartas pares no baralho.
evenCardCount (Array.fromList [ 3, 8, 4, 5, 1, 6, 10 ] )
--> 4
Inscreve-te no Exercism para aprenderes e dominares Elm com 28 conceitos110 exercícios, e mentoria humana real, tudo grátis.