predicates
filter, takeWhile 같은 함수에 tear-off로 넘기기 좋도록 준비해 둔 작은 타입/값 검사 모음입니다.
강의
평범한 Dart 코드라면 그냥 a is String이라고 쓰면 됩니다 —
그게 관용적인 방식이고, 여기 있는 함수들이 그것을 대체하지도 않습니다.
이 함수들이 존재하는 이유는 하나입니다. Dart의 is 연산자는
일급 함수 값으로 tear-off 할 수 없는데, filter,
takeWhile, find 같은 함수들은 모두
bool Function(A)를 원하기 때문입니다.
filter(isString, mixedList)가
filter((a) => a is String, mixedList)보다 읽기 좋다는 것,
이 페이지의 요점은 그게 전부입니다.
isNil은 FxTS의 "null 또는
undefined인가" 검사를 그대로 옮긴 것입니다. Dart는 둘을
null 하나로 합쳐 두었으므로, isNull과 완전히
동일합니다. 오직 FxTS와의 이름 대응을 위해 남겨 둔 이름이 세 개 더 있고
@Deprecated로 표시되어 있습니다. isUndefined
(Dart에는 undefined가 없으니 그냥 isNull입니다),
isArray (JS의 Array → Dart의 List이니
isList입니다), isObject (JS의 평범한 객체 →
Dart의 Map이니 isMap입니다). 새로 쓰는 코드에서는
deprecated 되지 않은 이름을 쓰세요. 별칭들은 포팅된 호출부가 그대로
컴파일되도록 남겨 둔 것입니다.
데모 1 · filter에 바로 넘기는 tear-off
데모 2 · isNil과 deprecated 별칭들
직접 해 보기
연습: isNotNull로 row에서 null을 걸러내 보세요.