juxt

리스트에 담긴 모든 함수를 같은 값에 적용하고 그 결과를 모읍니다.

List<R> Function(T a) juxt<T, R>(List<R Function(T a)> fns)

강의

같은 입력을 받는 함수들의 리스트를 juxt에 넘기면, 그 입력을 모든 함수에 통과시켜 결과를 순서대로 담은 List를 반환하는 함수 하나를 돌려줍니다. 같은 코드를 반복하지 않고도 값 하나에서 서로 독립적인 여러 관점을 뽑아내는 간결한 방법입니다.

FxTS의 juxt는 가변 인자를 받고 인자 개수가 서로 다른 함수도 받을 수 있습니다. Dart에는 가변 제네릭이 없어서 FxDart 버전은 항목마다 단항 함수 T -> R 하나씩만 받습니다 — 그래도 "이 값 하나에 읽기 전용 투영 N개를 돌린다"는 흔한 경우를 감당하기에는 충분합니다.

데모 1 · 기본

dartdoc에 나오는 전형적인 예제입니다. 리스트의 최솟값과 최댓값을 한 번에 계산합니다:

데모 2 · 여러 필드 투영하기

레코드 같은 Map에서 여러 필드를 한꺼번에 꺼냅니다:

직접 해 보기

연습: juxt로 이 리스트의 sumaverage를 한 번에 계산해 보세요.

관련 항목: apply — 동적인 인자 목록으로 함수 호출하기 · cases — 전부 실행하는 대신 술어로 함수 하나 고르기 · min / max — 위 데모에서 함께 쓴 함수 · zip — 하나가 아니라 두 시퀀스의 값을 결합하기