如何创建一个延迟调用给定函数的函数?

How to create a function that delays call to given function?

使用 ramda,我试图找到(或构建)一个非常简单的运算符,它需要一个函数和 returns 一个在返回一个新函数之前询问其参数的函数实际调用。您可以将此视为 "delaying" 调用。正如下面的回复所指出的,这通常称为 thunk.

本质上,

const wrap = fn => (...args) => () => fn(...args);

const sayHiWorld = wrap(console.log)('hi', 'world');
sayHiWorld();
// -> 'hi world'

部分应用程序在我的情况下不起作用,因为在定义时实际上并不知道 args。我得到的最接近的是使用 R.useWith - 但这限制了参数的数量。

有什么想法吗?

我有点困惑。看起来你的 wrap 中有一个非常好的版本。你认为 Ramda 一定已经拥有了吗?你想要一个用 Ramda 编写的版本吗?

你想通过调用这个函数创建的东西通常被称为 thunk,我有时看到这样一个函数叫做 thunkify.但是 wrap 也可以。

您也可能会看到讨论