add

Suma dos valores del mismo tipo, como una función que puedes pasar de un lado a otro.

T add<T extends Object>(T a, T b) => (a as dynamic) + b as T;

Lección

add(a, b) es + empaquetado como valor de función. Como despacha a + de forma dinámica, funciona con cualquier cosa que soporte el operador — num, concatenación de String, incluso concatenación de List — igual que el add de FxTS, que acepta tanto números como cadenas.

Su verdadero valor aparece allí donde una API espera una función binaria (T, T) -> T en lugar de un (a, b) => a + b escrito en línea — de forma muy natural como la función combinadora de reduce/fold. Eso sí, es una función binaria, así que para usarla como callback unario de map (sumar una cantidad fija a cada elemento) tienes que fijar tú mismo uno de los lados: (b) => add(n, b).

Demo 1 · Fundamentos

Demo 2 · Como reductor, y con un lado fijado para map

Pruébalo tú

Ejercicio: usa fold + add para concatenar todas las partes en una sola cadena.

Relacionado: reduce / fold — el sitio habitual de add como combinador · sum — una suma ya hecha para Iterable<num> · gt · gte · lt · lte — las contrapartes de comparación de add · apply — llama a cualquier función con una lista dinámica de argumentos