gt · gte · lt · lte
연산자 대신 함수 값으로 쓰는 data-first 비교 함수입니다.
bool gt(Object? a, Object? b) // a > b
bool gte(Object? a, Object? b) // a >= b
bool lt(Object? a, Object? b) // a < b
bool lte(Object? a, Object? b) // a <= b
강의
gt, gte, lt, lte는
네 가지 순서 비교 연산자를 data-first 함수로 감싼 것입니다.
gt(a, b) == (a > b)처럼 첫 번째 인자가 왼쪽에 오며,
연산자와 순서가 정확히 같습니다. 덕분에 중위 연산자 대신 함수를 요구하는
API 어디에나 그대로 비교자로 넘길 수 있습니다.
내부적으로는 두 값이 서로 Comparable해야 하고, 한 가지 예외를
빼면 런타임 타입까지 정확히 같아야 합니다. num과
num, String과 String은 섞일 수 있어
int와 double을 비교할 수 있지만, 그 외에 타입이
맞지 않으면 조용히 변환하는 대신 ArgumentError를 던집니다.
네 함수 모두 커링되지 않습니다 — gt(5) 같은 부분 적용은
없습니다. (예를 들어 filter에 넘길) 재사용 가능한 단항 술어가
필요하다면 한쪽을 고정하는 짧은 클로저를 쓰면 됩니다.
(b) => gt(b, 5)처럼요.
데모 1 · 기본 사용법과 타입 불일치 오류
데모 2 · 커링해서 filter 술어로 쓰기
직접 해 보기
연습: 나이가 18 이상인(gte) 성인만 남겨 보세요.