【发布时间】:2019-03-29 14:54:51
【问题描述】:
我正在编写一个简单的打字稿程序,它接受两个参数,x 和 y,并将这些参数传递给 Math.pow(x,y)。
因为我想写一个使用 Math.pow() 的柯里化函数,所以我尝试了:
function power(x:number,y:number):number {
return Math.pow(x,y);
}
但也有人写成:
function mathPow(x : number) : number => (number=>number) {
(y : number) => Math.pow(x,y)
}
我想知道我上面的第一个尝试是否被认为是咖喱,因为这是我能想到的最简单的尝试。还是第二个是整体更好的咖喱版本?
--更新
function pow(x:number):number {
return function(y:number) {
return Math.pow(x,y);
}
}
【问题讨论】:
-
第一个没有柯里化,因为您在调用它时仍需要传递所有参数。柯里化的问题是你返回一个函数(需要更少的参数)。
-
@trincot 谢谢。我在更新的帖子中第二次重新尝试了柯里化语法。你能调查一下并告诉我我现在做得对吗?
-
您的第二次尝试与“某些人”的尝试相同,但使用
function关键字而不是箭头函数(表达式)语法。但是,您应该更改外部函数的返回类型。它不是number,而是一个函数。注意:StackOverflow 问题不应该是在讨论期间使用新尝试更新的剪贴板。请将您的问题修正为稳定的问题。 -
@trincot 谢谢!会记住这一点。干杯
标签: javascript typescript currying