使用范围类而不是fixnum的ruby for循环?

时间:2014-10-27 17:56:09

标签: ruby range

for i in [0..4] do
  puts i + 1
end

未定义的方法`+' for 0..4:Range(NoMethodError)

为什么不将该范围内的每个数字视为循环中的fixnum?

3 个答案:

答案 0 :(得分:2)

[0..4]实际上是一个范围元素的数组,与[(0..4)]相同。您需要将其更改为(0..4)

答案 1 :(得分:1)

改为写:

for i in 0..4 do

否则你没有范围,你有一个包含1个范围的数组。

答案 2 :(得分:0)

实现目标有多种方法:

0.upto(4) { |i|
  puts i
}

0.step(4, 1) { |i|
  puts i
}

5.times { |i| # 5 for inclusive
  puts i
}

for i in 0..4
  puts i
end

一切都会输出:

# ⇒ 0
# ⇒ 1
# ⇒ 2
# ⇒ 3
# ⇒ 4

希望它有所帮助。