Elm-tuples

提供:Dev Guides
移動先:案内検索

ニレ-タプル

時には、さまざまなタイプの値のコレクションを保存する必要があるかもしれません。 Elmは、この目的に役立つtupleと呼ばれるデータ構造を提供します。

タプルは、異種の値のコレクションを表します。 つまり、タプルを使用すると、異なるタイプの複数のフィールドを格納できます。 タプルには、固定数の値が格納されます。 タプルは、関数から異なるタイプの複数の値を返す場合に便利です。 これらのデータ構造は、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

二番目

*second* タプル操作は、タプルから2番目の値を抽出します。

構文

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つの数値を持つタプルを取り、それらの合計を返します。

破壊

構造化には、タプルを個々の値に分割することが含まれます。 3つ以上の要素を持つタプル内の個々の値にアクセスするには、構造化を使用します。 ここでは、タプルの各値を異なる変数に割り当てます。 _を使用すると、無視またはスキップされる値のプレースホルダーを定義できます。

> (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節を使用してそれらにアクセスしています。