Topazdocs
언어 정책

함수와 제네릭

함수, 람다, 기본값, 가변 인수, 제네릭 호출 규칙.

이름 있는 함수와 람다는 매개변수, 기본값, 가변 인수, 제네릭 제약, 이름 있는 인수를 같은 호출 규칙으로 처리합니다.

정책

함수는 매개변수 타입을 반드시 적고 반환 타입은 생략할 수 있습니다. 매개변수는 변경할 수 없습니다. 기본값은 리터럴이나 const 표현식이며 다른 매개변수를 참조할 수 없습니다. 마지막 가변 매개변수는 ...name: T로 적고 함수 안에서 Array<T>로 받습니다. 람다는 =>를 사용하며 문맥에서 매개변수 타입을 추론합니다.

명시된 동작

호출할 때는 호출 대상을 한 번 계산한 뒤 위치 인수와 스프레드 인수를 왼쪽에서 오른쪽으로 평가하고, 마지막에 이름 있는 인수를 연결합니다. 배열 스프레드는 고정 매개변수가 모두 채워진 뒤에만 가변 인수로 들어갈 수 있습니다. 명시적 타입 인수는 값 인수와 기대 반환 타입에 앞서 추론에 사용되며 모든 정보가 서로 일치해야 합니다.

제약과 명시적 거부

args: ...T, 마지막이 아닌 가변 인수, 이름 있는 인수 뒤의 위치 인수, 고정 매개변수로의 스프레드, 중복되거나 누락된 인수, 익명 function(...) {} 표현식은 거부됩니다. 제네릭 제약은 이름 있는 함수의 타입 매개변수에서만 선언할 수 있습니다.

유예 경계

고위 다형성, 제네릭 람다, 타입 매개변수 기본값, 제네릭 수신자 메서드, 동적 프로토콜 배치, 임의의 trait 제약은 아직 포함되지 않습니다.

예제

TOPAZ
function head<T>(values: Array<T>) -> Option<T> {
    match values {
        case [] => None
        case [first, ..] => Some(first)
    }
}

let first: Option<int> = head([1, 2, 3])

관련 정책