0

为什么:

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 替换第二个,只是在示例中作为占位符重用)ii我想x在 code3_x 中的特定索引处插入。

笔记:

我正在尝试将以下 javascript 转换为 ruby ​​ 这只是一个更大函数的片段

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

更新: 这里是我试图在 ruby​​ 中重新实现的整个 javascript 函数的要点的链接。 https://gist.github.com/therocketforever/d1dca656f4579bc5baf3

4

2 回答 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]
于 2013-04-03T00:31:55.807 回答
0

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

code3_x[i] = i
于 2013-04-03T00:14:02.930 回答