2013-04-03 47 views
0

为什么:为什么这个数组的结果是9而不是数组的内容?

code3_x = [] 
level = 7 

(level + 2).times do |i| 
# This is more what I want: 
# code3_x[i] << i 
# This works to demonstrate: 
    code3_x << i 
end 

回报:

=> 9 

为什么不呢?

=> [0,1,2,3,4,5,6,7,8,9] 

我建立一个数组为code3_x &我有一个值x(代替第二i与有条件选择的数目,只是在本例中重用i作为占位符)我想在插入x code3_x中的特定索引。

注:

我想翻译下面的JavaScript红宝石 这仅仅是一个更大的功能

if ... conditions ...{ 
    code3_x[i] =2; 
    mod_x -= h_pow; 
}else... 

更新的剪断: 这里一个链接到整个JavaScript函数的要点我试图在Ruby中重新实现。 https://gist.github.com/therocketforever/d1dca656f4579bc5baf3

+2

你甚至不会成功运行的代码示例... –

回答

5

我猜你在代码中的错字。 <<没有在code3_x[i](即nil)上定义。 code3_x[i] = i的版本返回9,因为#times的返回值是您要发送消息的对象(在本例中为(level + 2))。 code3_x仍然会设置:

(level + 2).times do |i| 
    code3_x[i] = i 
end # => 9 
code3_x # => [0,1,2,3,4,5,6,7,8] 

如果需要返回值,例如,你可以使用#map射程

(0..9).map{ |i| i * i } # => [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 
+0

烨你对......有点儿,“我原来是这样。它应该指向code3_x而不是[i]。事情是需要回报价值,只是还没有......因为我会再做几次。 –

0

,因为你正在做的一个位移位;)尝试

code3_x[i] = i 
相关问题