다음을 통해 공유


튜플(F#)

튜플은 명명되지 않았지만 순서가 지정된 값의 그룹입니다. 튜플에 포함된 값의 형식은 서로 다를 수 있습니다.

( element , ... , element ) 

설명

위 구문에서 각 element는 임의의 식이 될 수 있습니다.

예제

튜플의 예로는 형식이 같거나 서로 다른 요소 두 개의 쌍, 요소 세 개의 쌍 등이 있습니다. 다음 코드에서는 몇 가지 예를 보여 줍니다.

// Tuple of two integers.
( 1, 2 ) 

// Triple of strings.
( "one", "two", "three" ) 

// Tuple of unknown types.
( a, b ) 

// Tuple that has mixed types.
( "one", "1", "2.0" ) 

// Tuple of integer expressions.
( a + 1, b + 1) 

개별 값 구하기

다음 코드에서와 같이 패턴 일치를 사용하여 튜플 요소에 액세스하고 이름을 할당할 수 있습니다.

let print tuple1 =
   match tuple1 with
    | (a, b) -> printfn "Pair %A %A" a b

다음과 같이 let 바인딩에 튜플 패턴을 사용할 수 있습니다.

let (a, b) = (1, 2)

이렇게 하면 값 a와 b가 동시에 바인딩됩니다. 튜플의 요소 중 하나만 필요한 경우에는 필요 없는 변수에 대해 새 이름을 만들지 않도록 와일드카드 문자(밑줄)를 사용할 수 있습니다.

let (a, _) = (1, 2)

함수 fst와 snd는 각각 튜플의 첫째 요소와 둘째 요소를 반환합니다.

let c = fst (1, 2)
let d = snd (1, 2)

튜플의 셋째 요소를 반환하는 기본 제공 함수는 없지만 다음과 같이 이 기능을 수행하는 함수를 쉽게 작성할 수 있습니다.

let third (_, _, c) = c

일반적으로 개별 튜플 요소에 액세스하는 데는 패턴 일치를 사용하는 것이 더 좋습니다.

튜플 사용

튜플을 사용하면 다음 예제에서와 같이 함수 하나로부터 여러 개의 값을 손쉽게 반환할 수 있습니다. 정수 나눗셈을 계산하는 이 예제에서는 나눗셈의 몫을 반올림하여 튜플 쌍의 첫째 멤버로 반환하고 나머지를 튜플 쌍의 둘째 멤버로 반환합니다.

let divRem a b = 
   let x = a / b
   let y = a % b
   (x, y)

일반적인 함수 구문에 암시되어 있는 함수 인수를 암시적으로 변환하고 싶지 않은 경우 튜플을 함수 인수로 사용할 수도 있습니다.

let sumNoCurry (a, b) = a + b

다음 코드에서와 같이 함수 let sum a b = a + b를 정의하는 일반적인 구문을 사용하여 함수에 부분 적용되는 첫째 인수로 함수를 정의할 수 있습니다.

let addTen = sum 10
let result = addTen 95  
// Result is 105.

튜플을 매개 변수로 사용하면 변환이 비활성화됩니다. 자세한 내용은 함수(F#)의 "인수 부분 적용"을 참조하십시오.

튜플 형식의 이름

튜플인 형식의 이름을 작성하면서 요소를 구분하는 데는 * 기호를 사용합니다. (10, 10.0, "ten")의 예에서와 같이 int, float 및 string으로 이루어진 튜플의 형식은 다음과 같이 작성됩니다.

int * float * string

컴파일된 튜플 형식

튜플을 F#에서만 사용하고 다른 언어에는 노출하지 않는 경우 버전 4 이전의 .NET Framework 버전을 대상으로 하지 않으면 이 단원의 내용에 신경을 쓰지 않아도 됩니다.

튜플은 여러 가지 제네릭 형식 중 하나인 개체로 컴파일됩니다. 해당 이름은 모두 Tuple이며 인자, 즉 형식 매개 변수의 수에 대해 오버로드됩니다. C# 또는 Visual Basic 등과 같은 다른 언어에서 튜플을 보거나 F# 구문을 인식하지 못하는 도구를 사용하는 경우 튜플 형식이 이와 같은 형태로 표시됩니다. Tuple 형식은 .NET Framework 4에서 도입되었습니다. 그 이전 버전의 .NET Framework를 대상으로 하는 경우 컴파일러에서는 F# 핵심 라이브러리 2.0 버전에 포함된 System.Tuple 버전을 사용합니다. 이 라이브러리의 형식은 2.0, 3.0 및 3.5 버전의 .NET Framework를 대상으로 하는 응용 프로그램에만 사용됩니다. .NET Framework 2.0 및 .NET Framework 4 F# 구성 요소 사이의 이진 호환성을 위해 형식 전달이 사용됩니다.

참고 항목

기타 리소스

F# 언어 참조

F# 형식