Elm - 元组

有时,可能需要存储不同类型的值的集合。 Elm 为我们提供了一种称为元组的数据结构来满足此目的。

元组表示异构值的集合。 换句话说,元组能够存储不同类型的多个字段。 元组存储固定数量的值。 当您想要从函数返回多个不同类型的值时,元组非常有用。 这些数据结构与 elm 中的其他类型一样是不可变的。

语法

(data1,data2)

下面是一个简单的例子 −

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

在后续部分中,我们将了解不同的元组操作。

first

此操作从元组中提取第一个值。

语法

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

示例

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

second

second 元组操作从元组中提取第二个值。

语法

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

示例

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

元组列表

列表可以存储元组。 如果在列表中使用元组,请确保它们都具有相同的数据类型并且具有相同数量的参数。

示例

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

具有函数的元组

函数可以返回元组。 此外,元组可以作为参数传递给函数。

示例 1

以下示例定义函数 fn_checkEven。 该函数接受一个整数值作为参数并返回一个元组。

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

示例 2

下面将一个元组作为参数传递给函数。

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

函数 fn_add 接受一个包含 2 个数值的元组并返回它们的总和。

解构

解构涉及将元组分解为单独的值。 要访问具有三个或更多元素的元组中的各个值,我们使用解构。 在这里,我们将元组中的每个值分配给不同的变量。 使用 _ 可以为将被忽略或跳过的值定义占位符。

示例

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

示例

在这个例子中,我们将使用let..in块语法来解构。 let 块包含变量,in 块包含应计算的表达式和应返回的值。

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

我们在 let 子句中声明变量 a b c 并使用 in 子句访问它们。