加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:24:37 所属栏目:百科 来源:网络整理
导读:注意:mischa的 splat on GitHub有很多很酷的交互式实例*. 通过谷歌搜索,我发现在Ruby中迭代一系列数字的一种方法(你的经典C风格的循环) for (i = first; i = last; i++) { whatever(i);} 是做这样的事情 [*first..last].each do |i| whatever iend 但是那个
注意: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方法是迭代数组或集合,而不是使用数组长度并使用整数索引进行迭代.但是,在这个例子中,我真的在处理一个整数列表.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读