negate

Devuelve un predicado que es la negación lógica del que le pasas.

bool Function(T) negate<T>(bool Function(T) f)

Lección

negate(f) te devuelve un predicado nuevo que da !f(x) para cualquier x. Resulta más útil cuando ya tienes un predicado con nombre (isEven, isEmpty, el resultado de un matches(pattern)) y quieres su opuesto como valor de función — para filter, reject o cualquier otro sitio donde se espere un predicado — sin volver a definir la lógica.

No lo confundas con not: not invierte un único valor bool, mientras que negate invierte toda una función predicado. negate(f) equivale más o menos a (x) => not(f(x)).

Demo 1 · Fundamentos

Demo 2 · Negar un predicado de la librería

negate se compone con cualquier predicado que ya exista en la librería, como isEmpty, que trabaja sobre valores:

Pruébalo tú

Ejercicio: usa negate(isVowel) para quedarte solo con las consonantes.

Relacionado: not — niega un único valor booleano · filter / reject — el destino habitual de un predicado negado · isEmpty — un predicado sobre valores para combinar con negate · when — aplica un callback solo cuando se cumple un predicado