Javascript CoffeeScript对splat的好奇&这个实现
因此,通过一些代码查看功能和咖喱作为它的驱动程序。。我看到了splat使用的惯例,虽然我可以看到它在编译的javascript中做了什么,但我没有看到任何关于is-docs等的提及。。上。。。行末coffeescript的splat用法见下文 例如,我们有:Javascript CoffeeScript对splat的好奇&这个实现,javascript,coffeescript,Javascript,Coffeescript,因此,通过一些代码查看功能和咖喱作为它的驱动程序。。我看到了splat使用的惯例,虽然我可以看到它在编译的javascript中做了什么,但我没有看到任何关于is-docs等的提及。。上。。。行末coffeescript的splat用法见下文 例如,我们有: flip = (f) -> (as...) -> f as.reverse()... 其汇编目的是: flip = function(f) { return function() { var as; as
flip = (f) -> (as...) -> f as.reverse()...
其汇编目的是:
flip = function(f) {
return function() {
var as;
as = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
return f.apply(null, as.reverse());
};
};
现在,我理解为。。。被用作:
as = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
获取参数并将其分配给as
但是,我没有想到的是这里的用法:
-> f as.reverse()... # <-- the "..." at the end.
如果我将其删除为“…”,则编译后的。。那么,这里使用。。。最后。我的咖啡脚本知识中缺少了这个概念。关于。。。在队伍的尽头 这里您看到的是splat参数和splat参数之间的区别。这个运算符用于这两种情况,因为它们是相关的。不过,这可能会让人困惑,因为这些用法是相反的 如:相反。。。是传递给f的splat参数。编译后的JavaScript使用f.apply将as.reverse分解为接收方f的多个参数
作为。。。是一个splat参数。编译后的JavaScript使用_切片将arguments对象转换为接收器内的数组,将参数收集到单个列表中。关于。。。在队伍的尽头 这里您看到的是splat参数和splat参数之间的区别。这个运算符用于这两种情况,因为它们是相关的。不过,这可能会让人困惑,因为这些用法是相反的 如:相反。。。是传递给f的splat参数。编译后的JavaScript使用f.apply将as.reverse分解为接收方f的多个参数
作为。。。是一个splat参数。编译后的JavaScript使用_切片将arguments对象转换为接收器内的数组,将参数收集到单个列表中。我明白您的意思,因为…reverse没有意义,但既然它是一个splat,那么coffeescript是否足够聪明,不需要a.reverse…-最后?我认为这是分配给我的论点,所以这就是为什么我有点困惑的需要。。。最后,@jamesemanon我们从一个离我们做f as.reverse的地方很近的splat参数得到as,这只是巧合。。。。reverse是JavaScript数组上的一个函数,所以我们使用一个splat参数作为。。。为了将数组创建为,我们调用reverse来创建一个新数组,并使用一个splat参数将该新数组分开,所有这些参数都用f as.reverse。。。。我们需要将新数组分开,因为通常情况下,f不需要数组参数。我明白你的意思,因为…reverse没有意义,但是既然它是一个splat,那么coffeescript是否足够聪明,不需要a.reverse…-最后?我认为这是分配给我的论点,所以这就是为什么我有点困惑的需要。。。最后,@jamesemanon我们从一个离我们做f as.reverse的地方很近的splat参数得到as,这只是巧合。。。。reverse是JavaScript数组上的一个函数,所以我们使用一个splat参数作为。。。为了将数组创建为,我们调用reverse来创建一个新数组,并使用一个splat参数将该新数组分开,所有这些参数都用f as.reverse。。。。我们需要将新数组分开,因为通常f不需要数组参数。