nullable

정보 없는 raise 스코프에서 블록을 실행합니다: 어디서든 단락이 일어나면 블록 전체가 null로 평가됩니다. Option 타입을 대신하는 nullable 우선 대안입니다.

A? nullable<A>(A Function(SingletonRaise r) block) Future<A?> nullableAsync<A>(FutureOr<A> Function(SingletonRaise r) block) on SingletonRaise: A bind<A>(A? value) · ensure(bool) · ensureNotNull(A?) · none()

강의

필요한 실패 정보가 부재뿐이라면 Either는 과합니다 — Dart에는 이미 부재 전용 채널이 있으니까요: T?. nullableeither 빌더의 정보 없는 쌍둥이입니다(Arrow의 nullable { }를 이식한 것입니다). 스코프의 r.bind(value)가 nullable을 풀어내고, 값이 null이면 블록 전체가 null을 반환합니다.

?.??를 이어 붙이는 방식과 비교했을 때의 이득은, 어느 단계에서든 — 조회든, 파싱이든, r.ensure(cond)를 통한 조건 검사든 — 중첩 없이 빠져나올 수 있고 중간 값들은 계속 승격된 non-null 상태로 남는다는 점입니다. FxDart가 Option/Maybe 타입을 제공하지 않는 이유가 이것입니다: T?에 이 빌더를 더하면 감싸는 비용 없이 그 역할이 전부 채워집니다.

데모 1 · tryParse에 bind 걸기

데모 2 · ?. 계단 없이 깊이 조회하기

직접 해 보기

연습: lastSeen['lee']는 존재하지만 null을 담고 있고, 'park'은 아예 없습니다 — r.bind는 둘 다 부재로 취급합니다. 양쪽 모두 null이 출력되도록 describe를 고쳐 보세요.

관련 항목: either 빌더 — 실패에 이유가 필요할 때 · EithergetOrNull()이 nullable로 돌아가는 다리를 놓아 줍니다 · nonNulls — 파이프라인에서 null 걸러 내기 · 타입 있는 에러 — 전체 가이드