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