December 20, 2020
본 포스트는 ReScript 공식문서를 스터디하며 정리한 포스트 입니다.
포스트를 작성하며 작성한 코드는 여기에서 확인할 수 있습니다.
Tuple은 JavaScript에는 없는 ReScrpt 전용 데이터 구조다. Tuple은 아래와 같은 특성이 존재한다.
let ageAndName = (24, "Lil' ReScript")
let my3dCoordinates = (20.0, 30.5, 100.0)
Tuple타입은 타입 주석 또한 사용할 수 있다. Tuple타입은 시각적으로 Tuple의 값과 비슷하다.
let ageAndName: (int, string) = (24, "Lil' ReScript")
// a tuple type alias
type coord3d = (float, float, float)
let my3dCoordinates: coord3d = (20.0, 30.5, 100.0)
참고 : 크기가 1인 튜플은 존재하지 않는다. 크기가 1일 경우 값 자체를 사용하는 것이다.
Tuple의 특정 맴버를 얻으료면 Tuple을 비구조화 할 수 있다.
let (_, y, _) = my3dCoordinates // y를 얻을 수 있다.
_
는 Tuple의 표시된 맴버들을 무시하고 있음을 의미한다.
Tuple은 변경과 같은 업데이트를 할 수 없다. 이전 항목들을 비구조화하여 새로운 Tuple을 생성해야 한다.
let coordinates1 = (10, 20, 30)
let (c1x, _, _) = coordinates1
let coordinates2 = (c1x + 50, 20, 30)
많은 과정 없이 여러개의 값을 전달하는 편리한 상황에서 튜플을 사용할 수 있다.
let getCenterCoordinates = () => {
let x = doSomeOperationsHere()
let y = doSomeMoreOperationsHere()
(x, y)
}
위와 같이 사용하게 되면 getCenterCoordinates
는 x
, y
두개의 값을 반환할 수 있다. Tuple을 사용하는 범위는 지역 범위을 유지하는 것이 좋다. 수명이 길고 자주 전달되는 데이터 구조의 경우 이름이 지정된 필드가 있는 Record를 사용하는 것이 더 선호된다.