Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript CoffeeScript对splat的好奇&这个实现_Javascript_Coffeescript - Fatal编程技术网

Javascript 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

因此,通过一些代码查看功能和咖喱作为它的驱动程序。。我看到了splat使用的惯例,虽然我可以看到它在编译的javascript中做了什么,但我没有看到任何关于is-docs等的提及。。上。。。行末coffeescript的splat用法见下文

例如,我们有:

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不需要数组参数。