我似乎无法遍历范围。这是我得到的:
[1..6].to_a.each{ |n|
puts(n)
}
# => [1..6]
这是一次迭代而不提供每个数字。有没有办法让这项工作?
答案 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
方法调用它。