【发布时间】:2016-09-25 14:21:00
【问题描述】:
我想按索引遍历一个 Ruby 数组。我有一个游戏,我希望玩家有一个单独的轮次滚动骰子,直到一个得到 20,每轮增加他们的分数。到目前为止,它将完成玩家 1 的所有回合,直到他们达到 20,然后将完成玩家 2,直到他们达到 20
players_array.each do |player|
player = Person.new(player)
until player.players_score.inject(0, :+) >= 20 do
score = player.dice_roll
player.add_to_score(score)
print player.players_score
print "\n"
print player, + player.players_score.inject(0, :+).to_s
print "\n"
end
end
我知道可能是each_with_index
有什么想法吗?
谢谢
新代码:
players_array.each do |player|
while TRUE
player = Person.new(player)
score = player.dice_roll
player.add_to_score(score)
if player.players_score.inject(0, :+) > 20
# puts player.players_score
puts '20 hit'
break
else
next
end
end
end
【问题讨论】:
-
更改为
players_array.each_with_index do |player, idx|,其中 idx 将是索引 -
@Santhosh 你的意思是
players_array.each_with_index...? -
是的,这是一个错字。我的错。谢谢
-
为什么每次迭代都创建一个
player的新实例? -
我认为你会从 psuedocoing 中受益。你把事情复杂化了。
标签: arrays ruby indexing iterator