【发布时间】:2023-03-16 01:12:02
【问题描述】:
我有一个测试,我需要在这种情况下实现一个称为 sum 的高阶函数,它满足以下要求:
sum(result => {console.log("-> ", result)});// -> prints: -> 0
sum(1)(result => {console.log("-> ", result)});// -> prints: -> 1
sum(1)(2)(result => {console.log("-> ", result)});// -> prints: -> 3
sum(1)(2)(4)(result => {console.log("-> ", result)});// -> prints: -> 7
我做了一个函数来通过递归获得无限柯里化,但我对回调函数有点迷茫。
let sum = a => !a ? 0 : b => b ? sum(a+b) : a
console.log(sum()) -> 0
console.log(sum(1)()) -> 1
console.log(sum(1)(2)()) -> 3
console.log(sum(1)(2)(4)()) -> 7
【问题讨论】:
-
这真的是一个 TypeScript 问题吗?我在这里根本看不到任何打字
-
this 是否满足您的需求?您是否需要能够重复使用部分结果?
-
是的,它也满足了。感谢您的回复。
-
你明白
!a ? …和b ? …在你找到的代码中做了什么吗? -
是的,因为该代码是为我完成的。这是我最初的解决方案。
标签: javascript ecmascript-6 closures higher-order-functions currying