为什么这个Ruby for循环失败了?

时间:2016-07-24 03:10:07

标签: ruby loops for-loop

好的,所以我只想在Ruby中使用Java:

int [] nums = { 2,4,6,8,10 };
for ( int i = 0; i < nums.length; i++ ){
    nums[i]=nums[i]+100;
}

我这样做:

nums = Array[2,4,6,8,10];
hello = nums.length;
for i in 0..hello 
    # puts i
    nums[i]=nums[i] + 100
end

代码失败:

qq.rb:5:in `block in <main>': undefined method `+' for nil:NilClass (NoMethodError)
        from qq.rb:3:in `each'
        from qq.rb:3:in `<main>'

为什么?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

你循环遍历数组的末尾。

.. 包含0..3生成数字0, 1, 2, 3

您希望...不包含范围中的最后一个值。 0...3生成0, 1, 2

那就是说,你真正想要的是一些惯用的Ruby:

nums = [2,4,6,8,10]
nums.map! { |x| x + 100 } # => [102, 104, 106, 108, 110]