Olmo - Tuple
A volte, potrebbe essere necessario memorizzare una raccolta di valori di vari tipi. Elm ci fornisce una struttura dati chiamata tupla che serve a questo scopo.
Una tupla rappresenta una raccolta eterogenea di valori. In altre parole, le tuple consentono di memorizzare più campi di diversi tipi. Una tupla memorizza un numero fisso di valori. Le tuple sono utili quando si desidera restituire più valori di tipi diversi da una funzione. Queste strutture dati sono immutabili come gli altri tipi in elm.
Sintassi
(data1,data2)
Di seguito viene mostrato un semplice esempio:
> ("TuotrialsPoint",5,True,"Hyderabad")
("TuotrialsPoint",5,True,"Hyderabad") : ( String, number, Bool, String )
Nelle nostre sezioni successive, impareremo le diverse operazioni sulle tuple.
primo
Questa operazione estrae il primo valore da una tupla.
Sintassi
Tuple.first tuple_name
> Tuple.first
<function> : ( a1, a2 ) -> a1
Illustrazione
> Tuple.first (10,"hello")
10 : number
secondo
Il second L'operazione tupla estrae il secondo valore da una tupla.
Sintassi
Tuple.second tuple_name
> Tuple.second
<function> : ( a1, a2 ) -> a2
Illustrazione
> Tuple.second (10,"hello")
"hello" : String
Elenco di tuple
Un elenco può archiviare tuple. Se vengono utilizzate tuple all'interno di una lista, assicurati che siano tutte dello stesso tipo di dati e abbiano lo stesso numero di parametri.
Illustrazione
> [("hello",20),("world",30)]
[("hello",20),("world",30)] : List ( String, number )
Tupla con funzione
Una funzione può restituire tuple. Inoltre, le tuple possono essere passate come parametri alle funzioni.
Illustrazione 1
L'esempio seguente definisce una funzione fn_checkEven. Questa funzione accetta un valore intero come parametro e restituisce una tupla.
> fn_checkEven no = \
if no%2 == 0 then \
(True,"The no is Even")\
else \
(False,"No is not even")
<function> : Int -> ( Bool, String )
> fn_checkEven 10
(True,"The no is Even") : ( Bool, String )
> fn_checkEven 11
(False,"No is not even") : ( Bool, String )
>
Illustrazione 2
Quanto segue passa una tupla come parametro a una funzione.
> fn_add (a,b) = \
| a+b
<function> : ( number, number ) -> number
> fn_add (10,20)
30 : number
La funzione fn_add accetta una tupla con 2 valori numerici e restituisce la loro somma.
Destrutturante
La destrutturazione implica la suddivisione di una tupla in valori individuali. Per accedere a valori individuali in una tupla con tre o più elementi, usiamo la destrutturazione. Qui, assegniamo ogni valore in una tupla a diverse variabili. Utilizzando _ è possibile definire segnaposto per valori che verranno ignorati o ignorati.
Illustrazione
> (first,_,_) = (10,20,30)
10 : number
> first
10 : number
Illustrazione
In questo esempio, useremo la sintassi del blocco let..in per destrutturare. Il blocco let contiene le variabili e il blocco in contiene le espressioni che dovrebbero essere valutate e il valore che dovrebbe essere restituito.
> t1 = (10,20,30)
(10,20,30) : ( number, number1, number2 )
> let \
(a,b,c) = t1 \
in\
a + b +c
60 : number
Stiamo dichiarando le variabili abc nella clausola let e accedendovi utilizzando la clausola in.