Как мне правильно карри fn.apply с нуля? - PullRequest
0 голосов
/ 22 мая 2018

Справочная информация: я хочу отобразить массив массивов параметров через чистый fn, который принимает несколько параметров.Я думал, что curry apply с нулевым значением, и вызов Array.map() сработает.

[[x1, y1], [x2, y2], [x3, y3], ... [xn, yn]].map(curry(fn.apply, null))



var curry = function(fn, value) {
    return function (x, y) {
        return fn(value, x, y);
    };
}
var fn = (x,y) => [x, y];
var fn_c = curry(fn.apply, null)
fn_c([1,2]);


Uncaught TypeError: Function.prototype.apply was called on undefined, which is a undefined and not a function
at <anonymous>:3:20
at <anonymous>:8:5

В функции карри запоминается только apply, без которого fn, из которого следует применить apply.Таким образом, функция curry пытается запустить apply(x,y) вместо fn.apply(x,y), что, конечно, не удается.

Как я могу получить функцию apply-ed для передачи?

1 Ответ

0 голосов
/ 22 мая 2018

Разобрался.Я забыл, что функции также являются объектами:

var curry = function(fn, value) {
    return function (x, y) {
        return fn(value, x, y);
    };
}
var fn = (x,y) => [x, y];
var fn_c = curry(Function.prototype.apply.bind(fn), null)
fn_c([1,2]);

... это ужасно.Я просто .map(params => fn.apply(null, params)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...