unless

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

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

강의

unless는 조건을 뒤집은 when입니다. unless(predicate, callback, value)callback(value)를 실행하되, predicate(value)false일 때만 실행합니다. 술어가 참이면 value를 손대지 않고 그대로 반환합니다. "이 조건이 이미 충족된 게 아니라면 기본값을 채워 넣는다"라는 흐름으로 자연스럽게 읽히므로 검증, 누락 데이터 보완, 예외 상황 정규화에 잘 맞습니다.

when과 마찬가지로 Dart에서는 두 분기가 모두 같은 타입 T를 반환해야 하며(유니온 반환 타입이 없습니다), 체인 형태도 없습니다 — 평범한 data-first 함수입니다.

데모 1 · 기본

데모 2 · 누락 데이터 보완하기

직접 해 보기

연습: unless로 아직 설정되지 않은 태그에 'general'을 채워 넣어 보세요.

관련 항목: when — 조건이 반대인 unless의 짝 · cases — 술어 하나가 아니라 여러 개를 다루기 · throwIf — 값을 대체하는 대신 예외를 던지기 · compact — 값을 채우는 대신 누락된 값을 버리기