Ruby类刷新/回滚删除的数组元素

时间:2016-04-01 17:17:14

标签: arrays ruby

我正在尝试为一款名为times up的游戏创建一个ruby类。基本上,我希望以下功能开始:

  • 该课程的每个实例都是游戏。

  • 每个游戏都有一系列由玩家输入的单词。

  • 该课程应该允许从单词数组中获取一个随机元素,然后从游戏中移除该元素。

  • 当所有单词都在" hat"之外时,游戏应该能够将数组刷新为原始内容,模拟将单词放回到下一轮的帽子中。

这是最后一点,我遇到了麻烦..我试图创建一个虚拟数组或一个未修改的基本数组,然后在一轮结束时将空的数组设置为基数组但是这个只导致我在第二轮中从基础数组中删除元素,并在第二轮结束时留下两个空数组:(如何创建一个不会被修改的副本?

这是我的代码:

class TimesUp

  def initialize
    @hat = []
    @basehat = []
  end

  def NewWord(word)
    @hat.push(word)
    @basehat.push(word)
  end

  def grab
    if @hat.empty?
        puts "End of round!"
    else
        l = @hat.length
        word = rand(l)
        puts @hat[word]
        @hat.delete_at(word)
    end
  end

  def printout
    puts @hat
  end

  # here is where i try to set the game array to the 'base' array. 
  def refresh
    @hat = @basehat
    @basehat = @basehat
  end
end

1 个答案:

答案 0 :(得分:0)

使用Object#dupclone也可能是一种选择。

def refresh
  @hat = @basehat.dup
  @basehat = @basehat.dup
end