튜플(Tuple)

튜플은 JavaScript에는 존재하지 않는 ReScript 특정 자료 구조입니다. 튜플은 다음과 같은 특성을 가지고 있습니다.

  • 불변

  • 순서가 있음

  • 생성 시점에 크기가 결정됨

  • 다른 타입의 값을 포함할 수 있음

ReScriptJS Output
let ageAndName = (24, "Lil' ReScript")
let my3dCoordinates = (20.0, 30.5, 100.0)

튜플 타입은 타입 어노테이션에도 사용할 수 있습니다. 이 튜플 타입은 튜플 값과 시각적으로 닮아야 합니다.

ReScriptJS Output
let ageAndName: (int, string) = (24, "Lil' ReScript")
// 튜플 타입인 타입 어노테이션을 다른 이름의 타입으로 사용
type coord3d = (float, float, float)
let my3dCoordinates: coord3d = (20.0, 30.5, 100.0)

참고: 크기가 1인 튜플은 없습니다. 크기가 1인 튜플은 값으로 사용됩니다.

사용법

튜플의 특정 요소를 가져오려면 다음과 같이 튜플을 구조 분해하세요.

ReScriptJS Output
let (_, y, _) = my3dCoordinates // y를 다시 가져옴 

튜플의 일부 요소를 무시하려면 위치에 _를 기재합니다.

튜플은 구성 요소를 변경할 수 없습니다. 구성 요소를 변경하려면 이전 버전 튜플을 구조 분해하고 새로운 튜플을 생성합니다.

ReScriptJS Output
let coordinates1 = (10, 20, 30)
let (c1x, _, _) = coordinates1
let coordinates2 = (c1x + 50, 20, 30)

사용 팁과 트릭

튜플은 여러 값을 전달하려 하는 경우, 큰 작업 없이 손쉽게 이용할 수 있는 장점이 있습니다. 다음은 여러 값을 반환하는 예제입니다.

ReScriptJS Output
let getCenterCoordinates = () => {
  let x = doSomeOperationsHere()
  let y = doSomeMoreOperationsHere()
  (x, y)
}

튜플은 작은 범위에서 사용하기를 바랍니다. 오래 사용되고 자주 전달되는 자료 구조의 경우, 필드 이름이 지정된 레코드의 사용을 권합니다.