数组中的范围

时间:2014-05-19 05:26:18

标签: ruby range

我似乎无法遍历范围。这是我得到的:

[1..6].to_a.each{ |n|
  puts(n)
}
# => [1..6]

这是一次迭代而不提供每个数字。有没有办法让这项工作?

3 个答案:

答案 0 :(得分:7)

[1..6]未定义范围。它定义了一个数组,其中一个元素是一个范围:

[1..6] == (1..6)
# => false
[1..6].class
# => Array

[1..6] == [(1..6)]
# => true
[1..6][0].class
# => Range

创建范围的正确语法是(1..6)

(1..6).each { |n| puts n }

答案 1 :(得分:1)

您可以使用

6.times { |n| puts n } 

如果你想要迭代n次

答案 2 :(得分:1)

您的 范围 size 1 的数组。现在,为了使它工作,你可以这样做:

[*1..3].each { |n| puts n }

输出为:

1
2
3

但在这种情况下更好,使用

(1..3).each { |n| puts n }

由于Range可枚举的,您可以使用Range#each方法调用它。