when

술어가 참이면 콜백을 적용하고, 그렇지 않으면 값을 그대로 반환합니다.

T when<T>(bool Function(T) predicate, T Function(T) callback, T value)

강의

when(predicate, callback, value)은 조건문 하나를 데이터로 표현한 것입니다. predicate(value)가 참이면 결과는 callback(value)이고, 그렇지 않으면 결과는 손대지 않은 value 그 자체입니다. 변환이 필요한 원소만 바꾸고 나머지는 그대로 두고 싶을 때 map 콜백 안에서 특히 읽기 좋습니다.

FxTS 버전은 두 분기의 타입이 다를 때 반환 타입을 유니온 T | R로 넓힐 수 있습니다. Dart에는 유니온 타입이 없으므로 callback 분기와 그대로 통과시키는 분기가 같은 타입 T를 공유해야 합니다 — 결과 타입이 정말로 달라야 한다면 cases를 쓰세요. 이쪽은 R이 입력 타입과 달라도 됩니다.

데모 1 · 기본

데모 2 · 파이프라인에서 값 범위 제한하기

직접 해 보기

연습: when으로 양수인 가격만 두 배로 만들고, 음수는 그대로 두어 보세요.

관련 항목: unless — 조건이 반대인 when의 형제 · cases — 여러 개의 술어, 그리고 다른 결과 타입 · not / negate — 넘길 술어를 만들 때 · map — when을 콜백으로 쓰게 되는 대표적인 자리