2015-01-16 90 views
0

所以我的目標是能夠運行一個「while」循環,並且在每次迭代中創建一個新變量,其中包含該變量名稱中的「迭代計數」並將其存儲以便以後在循環外部使用。請參閱下面的更多細節。能夠在另一個變量的名稱中使用變量嗎?紅寶石

注意:代碼在許多方面顯然都是錯誤的,但我正在通過這種方式編寫代碼以使其更清晰?至於我正在努力完成什麼。感謝您對這種可能性的任何意見。

count = "4" 
while count > "0" 
    player"#{count}"_roll = rand(20) 
    puts 'Player "#{count}" rolled: "#{player"#{count}"_roll}"' 
    count -= 1 
end 

我的目標是便能在程序像這樣後面的部分(更多或更少)

puts player4_roll 
puts player3_roll 
puts player2_roll 
puts player1_roll 

鍵爲訪問從內環路創建的變量這些變量是A)在循環中創建的B)名稱依賴於另一個變量輸入,並且C)可以在循環之外訪問以供以後使用。

希望我的問題明確,任何輸入將不勝感激。我對編程非常陌生,並試圖讓我的腦袋圍繞一些更復雜的想法。我不確定這是否可以在Ruby中完成。謝謝!

+0

這是爲了調試的目的? – Anthony

+0

@ Anthony我對編程非常陌生,我甚至不確定構成調試與否,但代碼是虛擬代碼,我正在尋找一個答案,稍後將在德克薩斯Hold Em風格的遊戲中實現。正在製作。基本上這部分代碼用於計算玩家發牌的次數,然後創建一個變量「player_x_hand」來保存卡片的字符串值(其中x =迭代中的計數)如果這一切都合情合理。 .. –

+4

我很確定這個問題可以通過另一種方式解決。有一些元編程的方法來創建變量,但我懷疑它會在這種情況下有用。爲什麼不直接將數組作爲數據存儲在數組中呢? – daremkd

回答

2

我認爲最好的方法是使用數組或哈希,用數組它是這樣的:

count = 0 
array = [] 
while count < 4 do 
    array[count] = rand(20) 
    puts "Player #{count} rolled: #{array[count]}" 
    count += 1 
end 

array.each do |var| 
    puts var 
end 

你將結果存儲在數組中,然後循環通過它。如果你想在循環的第二次迭代的結果,你做這樣的事:

puts array[1] 

如果你想使用散列有一些你需要做的修改:

count = 0 
hash = {} 
while count < 4 do 
    hash["player#{count}_roll"] = rand(20) 
    puts "Player #{count} rolled: #{hash["player#{count}_roll"]}" 
    count += 1 
end 

hash.each do |key, var| 
    puts var 
end 

如果你想循環的第二次迭代的結果你做這樣的事情:

puts hash["player1_roll"] 
+0

我認爲哈希的想法絕對適合我的目的,儘管放入代碼並運行它返回'14:語法錯誤,意外的tIDENTIFIER,期待keyword_do或'{'或'(' puts hash {「player1_roll」}} '和'14:語法錯誤,意想不到的$結束,預計keyword_end 把哈希{「player1_roll」} ^' 我覺得總體來說,如果我可以清除錯誤,這應該十分感謝 –

+0

忘記的錯誤。!。這是我的錯,因爲複製了「如果你想循環的第二次迭代的結果,你做了這樣的事情:」進入代碼。像魅力一樣工作。再次感謝! –

0

你可以使用instance_variable_set設置變量,並引用它的方式

instance_variable_set("@player#{count}_roll", rand(20)) 
+0

正在運行: 'Player「#{count}」rolled:「@ player#{count} _roll」' 'Player「#{count}」rolled:「@ player#{ 「@ player#{count}」roll:「@ player#{count} _roll」' 'Player#{count}「roll:」@ player#{count} _roll「' I 「M需要: '球員4卷:15' '玩家3卷:20' '玩家2卷:2' '播放器1卷:12' 對不起,我剛剛從來沒有聽說過,如果instance_variable_set前也許有點困惑? –