Orme - Tuples

Parfois, il peut être nécessaire de stocker une collection de valeurs de types variés. Elm nous donne une structure de données appelée tuple qui sert cet objectif.

Un tuple représente une collection hétérogène de valeurs. En d'autres termes, les tuples permettent de stocker plusieurs champs de types différents. Un tuple stocke un nombre fixe de valeurs. Les tuples sont utiles lorsque vous souhaitez renvoyer plusieurs valeurs de types différents à partir d'une fonction. Ces structures de données sont immuables comme les autres types dans elm.

Syntaxe

(data1,data2)

Un exemple simple est présenté ci-dessous -

> ("TuotrialsPoint",5,True,"Hyderabad")
("TuotrialsPoint",5,True,"Hyderabad") : ( String, number, Bool, String )

Dans nos sections suivantes, nous découvrirons les différentes opérations de tuple.

première

Cette opération extrait la première valeur d'un tuple.

Syntaxe

Tuple.first tuple_name
> Tuple.first
<function> : ( a1, a2 ) -> a1

Illustration

> Tuple.first (10,"hello")
10 : number

seconde

le second L'opération tuple extrait la deuxième valeur d'un tuple.

Syntaxe

Tuple.second tuple_name
> Tuple.second
<function> : ( a1, a2 ) -> a2

Illustration

> Tuple.second (10,"hello")
"hello" : String

Liste des tuples

Une liste peut stocker des tuples. Si des tuples sont utilisés dans une liste, assurez-vous qu'ils sont tous du même type de données et qu'ils ont le même nombre de paramètres.

Illustration

> [("hello",20),("world",30)]
[("hello",20),("world",30)] : List ( String, number )

Tuple avec fonction

Une fonction peut renvoyer des tuples. De plus, les tuples peuvent être passés en tant que paramètres aux fonctions.

Illustration 1

L'exemple suivant définit une fonction fn_checkEven. Cette fonction accepte une valeur entière comme paramètre et renvoie un tuple.

> 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 )
>

Illustration 2

Ce qui suit passe un tuple en tant que paramètre à une fonction.

> fn_add (a,b) = \
| a+b
<function> : ( number, number ) -> number
> fn_add (10,20)
30 : number

La fonction fn_add prend un tuple avec 2 valeurs numériques et renvoie leur somme.

Destructuration

La destruction consiste à diviser un tuple en valeurs individuelles. Pour accéder à des valeurs individuelles dans un tuple avec trois éléments ou plus, nous utilisons la déstructuration. Ici, nous affectons chaque valeur d'un tuple à différentes variables. L'utilisation de _ permet de définir des espaces réservés pour les valeurs qui seront ignorées ou ignorées.

Illustration

> (first,_,_) = (10,20,30)
10 : number
> first
10 : number

Illustration

Dans cet exemple, nous utiliserons la syntaxe de bloc let..in pour déstructurer. Le bloc let contient les variables et le bloc in contient les expressions qui doivent être évaluées et la valeur qui doit être renvoyée.

> t1 = (10,20,30)
(10,20,30) : ( number, number1, number2 )
> let \
(a,b,c) = t1 \
in\
a + b +c
60 : number

Nous déclarons les variables abc dans la clause let et y accédons en utilisant la clause in.