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?.
nullable은
either 빌더의 정보 없는
쌍둥이입니다(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 빌더 — 실패에 이유가 필요할 때 ·
Either — getOrNull()이 nullable로 돌아가는 다리를 놓아 줍니다 ·
nonNulls — 파이프라인에서 null 걸러 내기 ·
타입 있는 에러 — 전체 가이드