2013-04-03 90 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 
相關問題