Elm - 元组
有时,可能需要存储各种类型值的集合。Elm 为我们提供了一种名为元组的数据结构来实现此目的。
元组表示异构值的集合。换句话说,元组可以存储多种不同类型的多字段。元组存储固定数量的值。当您希望从函数返回多种不同类型的多个值时,元组很有用。这些数据结构与 Elm 中的其他类型一样是不可变的。
语法
(data1,data2)
下面显示了一个简单的示例:
> ("TuotrialsPoint",5,True,"Hyderabad")
("TuotrialsPoint",5,True,"Hyderabad") : ( String, number, Bool, String )
在我们接下来的章节中,我们将学习不同的元组操作。
第一个
此操作从元组中提取第一个值。
语法
Tuple.first tuple_name > Tuple.first <function> : ( a1, a2 ) -> a1
插图
> Tuple.first (10,"hello") 10 : number
第二个
第二个元组操作从元组中提取第二个值。
语法
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 子句中使用它们。
广告