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.