语法[* a..b]在Ruby中意味着什么?

前端之家收集整理的这篇文章主要介绍了语法[* a..b]在Ruby中意味着什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
注意:mischa的 splat on GitHub有很多很酷的交互式实例*.

通过谷歌搜索,我发现在Ruby中迭代一系列数字的一种方法(你的经典C风格的循环)

for (i = first; i <= last; i++) {
  whatever(i);
}

是做这样的事情

[*first..last].each do |i|
  whatever i
end

但是那个[* first..last]语法究竟发生了什么?我玩了irb,我看到了这个:

ruby-1.9.2-p180 :001 > 0..5
 => 0..5 
ruby-1.9.2-p180 :002 > [0..5]
 => [0..5] 
ruby-1.9.2-p180 :003 > [*0..5]
 => [0,1,2,3,4,5] 
ruby-1.9.2-p180 :004 > *0..5
SyntaxError: (irb):4: Syntax error,unexpected tDOT2,expecting tCOLON2 or '[' or '.'
*0..5
    ^

我在网上看到的所有内容都讨论了一元星号对扩展和折叠传递给方法的参数很有用,对于可变长度参数列表非常有用

def foo(*bar)
  bar 
end

foo 'tater' # => ["tater"]
foo 'tater','tot' # => ["tater","tot"]

我得到了,但我不知道它如何适用于我上面的块示例中的扩展.

要清楚,我知道Ruby方法是迭代数组或集合,而不是使用数组长度并使用整数索引进行迭代.但是,在这个例子中,我真的在处理一个整数列表.

猜你在找的Ruby相关文章