因此,我对curring(基于SO问题)的理解是,它允许您部分设置函数的参数并作为结果返回“截断的”函数。
如果您的毛发函数很大,则需要10个参数,如下所示
function (location, type, gender, jumpShot%, SSN, vegetarian, salary) {
//weird stuff
}
并且您想要一个“子集”功能,该功能将允许您处理除
jumpShot%
以外的所有预设,您是否不应该打破一个继承自原始功能的类呢?我想我正在寻找的是这种模式的用例。谢谢!
最佳答案
在javascript中,我确实使用了回调函数(因为从调用方调用它们后,不能将它们传递给任何参数)
所以像这样:
...
var test = "something specifically set in this function";
onSuccess: this.returnCallback.curry(test).bind(this),
// This will fail (because this would pass the var and possibly change it should the function be run elsewhere
onSuccess: this.returnCallback.bind(this,test),
...
// this has 2 params, but in the ajax callback, only the 'ajaxResponse' is passed, so I have to use curry
returnCallback: function(thePassedVar, ajaxResponse){
// now in here i can have 'thePassedVar', if
}
我不确定它是否足够详细或连贯...但是通过currying基本上可以让您“预填充”参数并返回一个已经填充了数据的裸函数调用(而不是要求您在其他时候填充该信息)
关于language-agnostic - 难道仅仅是避免继承的一种方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2725811/