Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个Ruby for循环失败了?_Ruby_Loops_For Loop - Fatal编程技术网

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

为什么这个Ruby for循环失败了?,ruby,loops,for-loop,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; } 代码失败,原因是: qq.rb:5:in `block in <main>': undefined method `+' for nil:NilClass (NoMethodError) from qq.rb:3:in `eac

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

int [] nums = { 2,4,6,8,10 };
for ( int i = 0; i < nums.length; i++ ){
    nums[i]=nums[i]+100;
}
代码失败,原因是:

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>'
qq.rb:5:in'block-in':nil:NilClass(NoMethodError)的未定义方法“+”
来自qq.rb:3:in'each'
来自qq.rb:3:in`'
为什么?


提前感谢你的帮助

您正在循环通过数组的末尾

包含在内
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]

您正在循环通过阵列的末端

包含在内
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]

我应该告诉你出了什么问题。谢谢。那是。。。我应该告诉你出了什么事。谢谢。那是。。。而不是…非常感谢。我知道这是一个简单的问题。是的,我忽略了最终的值。惯用的ruby应该是
(2..10)。第(2)步。map&100.method(:+)
@mudasobwa Err,不。你让代码更长,更复杂,可读性也差得多,这是为了把尽可能多的ruby方法塞进一行。这不是你编写惯用代码的方式。使用原始参数来证明任何事情总是很困难的,但是用谎言来证明是不可能的。我的代码短了10个符号,请在两个代码段上尝试
String#length
。除此之外,它只是在你看来“更复杂,更不可读”,这基本上不是(也从来不是)神圣的真理。像
step
这样的方法用于避免数字列表中的打字错误<代码>地图在
地图上选择因为没有理由改变一个对象(改变它的代码是误导性的,因此是不好的)。使用
Symbol#to_proc
是网络中任何源代码中第一个惯用ruby的例子。@sagarpandya82可读性很重要,但这里我们讨论的是“惯用ruby”,我只是指出“我喜欢这种方式”“这是一个惯用的红宝石”不是同义词。是的,只要你每天编写ruby代码,
&100。方法(:+)
{x | x+100}
可读性更强(至少不差)。除非你还在使用ruby语法编写PHP。非常感谢。我知道这是一个简单的问题。是的,我忽略了最终的值。惯用的ruby应该是
(2..10)。第(2)步。map&100.method(:+)
@mudasobwa Err,不。你让代码更长,更复杂,可读性也差得多,这是为了把尽可能多的ruby方法塞进一行。这不是你编写惯用代码的方式。使用原始参数来证明任何事情总是很困难的,但是用谎言来证明是不可能的。我的代码短了10个符号,请在两个代码段上尝试
String#length
。除此之外,它只是在你看来“更复杂,更不可读”,这基本上不是(也从来不是)神圣的真理。像
step
这样的方法用于避免数字列表中的打字错误<代码>地图
地图上选择因为没有理由改变一个对象(改变它的代码是误导性的,因此是不好的)。使用
Symbol#to_proc
是网络中任何源代码中第一个惯用ruby的例子。@sagarpandya82可读性很重要,但这里我们讨论的是“惯用ruby”,我只是指出“我喜欢这种方式”“这是一个惯用的红宝石”不是同义词。是的,只要你每天编写ruby代码,
&100。方法(:+)
{x | x+100}
可读性更强(至少不差)。除非您仍然使用ruby语法编写PHP。