我怎样才能调用Function.prototype.bind一个参数数组,而不是硬编码参数? (不使用ECMA6,所以没有传播运营商)。 我试图把承诺包装周围使用callback模块,我想绑定所有parameter passing到我的包装方法,并绑定它们。 然后我想用我自己的callback调用部分应用的绑定函数,这将解决或拒绝承诺。 var find = function() { var deferred, bound; deferred = Q.defer(); bound = db.find.bind(null, arguments); bound(function(err, docs) { if(err) { deferred.fail(err); } else { deferred.resolve(docs); } }); return deferred.promise; } 但是显然这不起作用,因为绑定需要参数而不是参数数组。 我知道我可以通过将我的callback插入到参数数组的末尾来使用apply: arguments[arguments.length] = function(err, docs) { … } db.find.apply(null, arguments); 或者通过遍历参数数组并重新定义每个参数的函数: var bound, context; for(var i = 0; i […]
我想知道是否有任何方式来拉动Java。 我认为,如果没有本地支持封锁,这是不可能的。
我有两次最近重构的代码,以改变参数的顺序,因为有太多的代码,像flip或\x -> foo bar x 42黑客发生。 当devise一个函数签名时,哪些原则会帮助我充分利用currying?
我不认为我还喜欢咖喱。 我明白它做了什么,以及如何去做。 我无法想象我会使用它的情况。 你在哪里使用JavaScript的currying(或哪里是使用它的主要库)? DOM操作或一般应用程序开发示例欢迎。 其中一个答案提到animation。 像slideUp , fadeIn这样的函数将一个元素作为参数,通常是一个curry函数,返回高阶函数的默认“animation函数”内置。 为什么比仅仅应用具有一些默认值的高级函数更好? 使用它有什么缺点吗? 正如这里所要求的,在JavaScript currying上有一些很好的资源: http://www.dustindiaz.com/javascript-curry/ Crockford,Douglas(2008) JavaScript:The Good Parts http://www.svendtofte.com/code/curried_javascript/ (绕过ML,跳过“ML中的速成课程”中的整个部分,然后从“如何编写curried JavaScript”开始) http://blog.morrisjohns.com/javascript_closures_for_dummies JavaScriptclosures如何工作? http://ejohn.org/blog/partial-functions-in-javascript(Resig先生关于平时的钱) http://benalman.com/news/2010/09/partial-application-in-javascript/ 我会在评论中增加更多。 所以,根据这个答案,一般的咖啡和部分应用都是便利的技术。 如果通过调用相同的configuration来频繁“提炼”高级函数,则可以使用高级函数来创build简单,简洁的辅助方法(或使用Resig的部分)。
我经常在互联网上看到各种各样的抱怨,其他民族的咖喱例子不是咖喱,而是实际上只是部分的应用。 我还没有find一个适当的部分应用程序的解释,或者它不同于咖喱。 似乎有一个普遍的混乱,相当的例子被描述为在一些地方curl,部分适用于其他地方。 有人能给我提供这两个术语的定义,以及它们有何不同的细节?