在下面的例子中,我不能让Ramda.js uncurry功能与ES6箭头功能工作时,默认的参数存在:Ramda咖喱/ uncurry问题与ES6默认参数语法
const tt = (x) => y => x + y;
const tt1 = (x = 5) => y => x + y;
const uncurry = R.uncurryN(2);
console.log(uncurry(tt)(1,2) );
console.log(uncurry(tt1)(1,2));
两个函数tt
和tt1
应该与默认参数相同。但输出是不同的(巴贝尔节点6.24.1):
3
6
似乎默认的语法被视为与uncurrying的分配。
我在这里错过了什么吗?这是打算还是一个错误?
只是为了澄清:
没有咖喱/ uncurry,这两个函数(具有或不具有默认值),当行为参数被充分供给的相同的方式。 tt(1)(2)
和tt1(1)(2)
都评估为3
。为什么改变调用约定后行为会有所不同?
顺便说一句,我正在关注一些react/redux示例(es6 how to use default parameters that go before non-default parameters?)并测试是否有可能将某些反应函数调用转换为Ramda样式。这里讨论的问题显然是一个障碍。
这似乎相关,因为uncurryN需要手动curried功能https://github.com/ramda/ramda/issues/1837 – AnthonyJClink
@AnthonyJClink:这些功能** **手动curried。 Ramda讨论的要点是,这对于像((x,y)=> x + y'或'R.curry((x,y)=> x + y)''不适用。 –