¿Cómo hacer currying con UnderscoreJS?

Estoy experimentando un poco con _.bind(...) . Veo cómo forzar un context de function con bind, pero aún no veo cómo hacer currying.

Lo que bash es esto:

  add = function(number) { this.sum = this.sum + number; } add5 = _.bind(add, { sum: 0 }, 5) 

Sin embargo, llamar add5() , o add5(5) parece no tener algunos efectos.

¿Alguna pista sobre cómo envolver los arguments de modo que el context se preserve de una llamada a otra?

One Solution collect form web for “¿Cómo hacer currying con UnderscoreJS?”

Probablemente quieras hacer una aplicación parcial , no currying / schönfinkeling. Underscore tiene la function _.partial para esto:

 function add(a, b) { return a+b; } var add5 = _.partial(add, 5); 

También puedes usar _.bind , y tiene algunos efectos. Por ejemplo:

 var add5 = _.bind(add, null /*context is irrelevant*/, 5); add5(3); // returns 8 

Sin embargo, su function no devolvió nada, y el context que usted cambió no fue accesible. Sin embargo:

 var ctx1 = {sum: 0}; function add(a) { this.sum += a; } // returns nothing! var addto1 = _.bind(add, ctx1); addto1(5); // undefined ctx1; // {sum: 5} var add5to1 = _.bind(add, ctx1, 5); add5to1(); // undefined ctx1; // {sum: 10} var ctx2 = {sum: 5}; add3to2 = _.bind(add, ctx2, 3); add3to2(); // undefined ctx2; // {sum: 8} 
  • Aplane la matriz 3D que contiene objects a 2D eliminando objects duplicates por su parámetro
  • Usando _.alguno | _.todo es apropiado para lo-dash o guión bajo
  • Algunas preocupaciones sobre las funciones en underscore.js son asincrónicas o sincronizadas
  • underscore.js .keys y .omit no funcionan como se esperaba
  • Mapeo de dos (o más) matrices en una con underscore.js
  • diferencia de dos arreglos con 10 millones de elementos - _.difference es demasiado lento
  • Crear un método personalizado de "synchronization" en Backbone.js
  • jquery / javascript - sobrescribir los valores que existen
  • Ordenar elementos en la matriz por más de un campo con lodash
  • Underscore.js: ¿encuentra el valor más frecuente en una matriz?
  • Dadas dos matrices de la misma longitud, encuentre qué elementos están "desplazados"
  • Detectando si _ es lodash o guion bajo
  • Cómo eliminar de una matriz en una directiva angular
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.