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으로 양수인 가격만 두 배로 만들고,
음수는 그대로 두어 보세요.