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

둘째

그만큼 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 개의 숫자 값이있는 튜플을 가져 와서 그 합계를 반환합니다.

구조화

Destructuring에는 튜플을 개별 값으로 분리하는 작업이 포함됩니다. 세 개 이상의 요소가있는 튜플의 개별 값에 액세스하려면 구조 분해를 사용합니다. 여기서는 튜플의 각 값을 다른 변수에 할당합니다. _를 사용하면 무시되거나 건너 뛸 값에 대한 자리 표시자를 정의 할 수 있습니다.

삽화

> (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 절에서 변수 abc를 선언하고 in 절을 사용하여 액세스합니다.