ActionScript 3:curry 函数如何工作?
Posted
技术标签:
【中文标题】ActionScript 3:curry 函数如何工作?【英文标题】:ActionScript 3: How do curry functions work? 【发布时间】:2018-12-03 15:15:34 【问题描述】:我最近才开始研究 ActionScript 代码(例如,我昨天才真正发现 ActionScript 是一个东西)。我唯一的经验是使用 Java,所以我不知道这段代码是如何工作的:
public static function curry(func:Function,...args):Function
return function (...args2):*
return func.apply(null,args.concat(args2));
;
我不明白星号在做什么,...args2 来自哪里(或它是什么),或者如何在 return 语句中包含 return 语句。等效的 Java 代码是什么? (即使比较复杂,我也能理解的好很多。)
【问题讨论】:
【参考方案1】:ActionScript 与 javascript 有许多相似之处 - 但也提供了一个静态类型系统,因为它在 Java 中使用。 Java 缺乏的是对高阶函数的支持。函数,接受函数作为参数或返回函数或两者兼有。
curry
接受 Function
类型的参数和任意数量的附加参数(...
其余参数)。它返回一个Function
,它也接受任意数量的参数。当这个函数被调用时,所有的参数都被连接起来并应用于初始函数。
// pseudo code
const f:Function = curry(function(o):* o.join(', '); , 1, 2, 3);
const result:* = f(4, 5, 6);
trace(result); // [1, 2, 3, 4, 5, 6]
在 Java 中,将使用内部类或 Java 8 引入的 lambda 表达式。
【讨论】:
以上是关于ActionScript 3:curry 函数如何工作?的主要内容,如果未能解决你的问题,请参考以下文章
你如何从 recompose 中读取这个 curry'd 函数……我的脑痛
您如何在 F# 或任何函数式语言中对第二个(或第三个、第四个、...)参数进行 curry?
如何正确使用带有 react-redux 的 useSelector 钩子的 curried 选择器函数?
Groovy闭包 Closure ( 闭包参数绑定 | curry 函数 | rcurry 函数 | ncurry 函数 | 代码示例 )