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 子句中使用它們。

廣告

© . All rights reserved.