ΓΓI*_*ICK 1 javascript function
我想知道是否可以在Javascript中执行此类操作:
one(plus(nine())); // returns 10
Run Code Online (Sandbox Code Playgroud)
看起来似乎如此,但我不确定如何将one()的值传递给plus()函数.
Eri*_*ric 13
一个这样的选择是定义(使用箭头函数简洁1):
// creates a function that either returns the number, or forwards the number
// as an argument to the provided function
// createNumber(10)() == 10
// createNumber(9)(Math.sqrt) == 3
var createNumber = value => f => f ? f(value) : value;
var one = createNumber(1);
var nine = createNumber(9);
// A very basic curryed implementation of addition
// plus(1)(2) == 3
var plus = a => b => a + b;
Run Code Online (Sandbox Code Playgroud)
这给出了你所需要的行为
> one(plus(nine())
10
Run Code Online (Sandbox Code Playgroud)
还有一大堆同样被误导但正确的行为
> nine()
9
> nine(plus(one()))
10
> plus(nine())(one())
10
> nine(plus)(one())
10
Run Code Online (Sandbox Code Playgroud)
1:请参阅Vincenzo Maggio关于转换为标准匿名函数的答案