Я определил свою собственную версию partial
функции:Частичная прикладная функция работает только в первый раз.
const partial = function (fn,...partialArgs){
let args = partialArgs;
return function(...fullArguments) {
let arg = 0;
for (let i = 0; i < args.length && arg < fullArguments.length; i++) {
if (args[i] === undefined) {
args[i] = fullArguments[arg++];
}
}
return fn.apply(null, args);
};
};
и когда я использую его:
let delay = partial(setTimeout,undefined,100)
delay(() => console.log("XXX"))
он печатает XXX
, как я ожидал. Но когда я пытаюсь повторно использовать функцию delay
, кажется, что он не работает:
delay(() => console.log("YYY"))
даже выше фрагмент кода печатает XXX
!! Я не знаю, где я делаю ошибку.
ли ваше намерение имеют 'partial' заменяют' undefined' аргументы в 'partialArgs' на те из' fullArguments'? Это очень необычная форма частичного применения, но я вижу примеры использования ... –
@ T.J.Crowder: Да, именно это я и пытался! –