如何创建一个延迟调用给定函数的函数?
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
也可以。
您也可能会看到讨论 。
使用 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
也可以。
您也可能会看到讨论