apply
인자가 담긴 List를 위치 파라미터로 넘겨 함수를 호출합니다.
강의
apply는 호출에 넘길 인자들이 개별 변수로 흩어져 있지 않고
이미 List에 모여 있을 때를 위한 함수입니다(입력에서
파싱했거나, 설정에서 모았거나,
juxt가 만들어 낸 경우처럼) —
그 인자들로 임의의 함수를 호출해야 할 때 씁니다. 내부적으로는 Dart의
Function.apply를 얇게 감싸고 결과를 R로
캐스팅한 것입니다.
f의 타입이 그냥 Function이기 때문에
apply는 본질적으로 동적입니다 — Dart는 인자 개수나 타입을
f의 시그니처와 대조해 컴파일 타임에 검사할 수 없고, 런타임에만
확인합니다. 정말로 동적인 인자 목록을 다룰 때만 꺼내 쓰고, 그 밖의
경우에는 함수를 직접 호출하세요.
관련은 있지만 별개의 주제로 커링이 있습니다 — 함수의 일부 인자를
미리 채워 두는 것이죠. FxTS에는 완전한 제네릭 curry가 있지만
Dart의 타입 시스템에는 임의의 인자 개수를 다룰 방법이 없어서, FxDart는
마이그레이션 보조용으로 @Deprecated 처리된 2인자
curry 스텁만 제공합니다. 클로저를 직접 작성하는 편이 낫습니다:
(b) => f(a, b).
데모 1 · 기본
데모 2 · 동적 호출 디스패치하기
핸들러마다 인자 개수가 다르고 인자는 런타임 List로 들어오는
간단한 커맨드 디스패처입니다:
직접 해 보기
연습: 아래 greet를 인자 목록
['Kim', 'Hello']와 함께 apply로 호출해 보세요.