Un Array in Elm è una collezione immutabile e veloce di zero o più valori dello stesso tipo.
A differenza di List, che è un import predefinito, il modulo Array deve essere importato esplicitamente, usando import Array o qualcosa di simile.
Gli array si possono definire così:
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" ]
Gli elementi si aggiungono a un array usando Array.push:
twoToFour = Array.fromList [ 2, 3, 4 ]
oneToFour = Array.push 1 twoToFour --> Array.fromList [ 1, 2, 3, 4 ]
Un elemento di un array si recupera usando Array.get:
sixSeven = Array.fromList [ 6, 7 ]
Array.get 0 sixSeven --> Just 6
Un elemento di un array si imposta usando Array.set:
sixSeven = Array.fromList [ 6, 7 ]
Array.set 1 8 sixSeven --> Array.fromList [ 6, 8 ]
Gli array si manipolano tramite le funzioni definite nel modulo Array.
oneTwo = Array.fromList [ 1, 2 ]
Array.length oneTwo --> 2
Nei panni di una futura maga, Elyse deve esercitarsi con le basi. Ha un mazzo di carte che vuole manipolare.
Per rendere le cose un po' più semplici, usa solo le carte da 1 a 10.
Implementa la funzione getCard che restituisce la carta alla posizione index del mazzo dato. Se l'indice non è presente nel mazzo, restituisci Nothing.
getCard 2 ( Array.fromList [ 1, 2, 4, 1 ] )
--> Just 4
getCard 6 ( Array.fromList [ 1, 2, 4, 1 ] )
--> Nothing
Implementa la funzione setCard che restituisce un mazzo con la carta alla posizione index sostituita con la nuova carta fornita.
Se l'index non è presente nel mazzo, restituisci il mazzo originale.
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 la funzione addCard che restituisce un mazzo con la nuova carta aggiunta.
addCard 8 ( Array.fromList [ 5, 9, 7, 1 ] )
--> Array.fromList [ 5, 9, 7, 1, 8 ]
Implementa la funzione removeCard che restituisce un mazzo con la carta alla posizione index rimossa.
Se l'index indicato non è un indice valido nel mazzo, restituisci il mazzo originale.
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 la funzione evenCardCount che conta il numero di carte pari nel mazzo.
evenCardCount (Array.fromList [ 3, 8, 4, 5, 1, 6, 10 ] )
--> 4
Iscriviti a Exercism per imparare e padroneggiare Elm con 28 concetti110 esercizi e il mentoring di persone reali, tutto gratis.