我希望能够存储一个用户最近5条评论,因此我创建了一个数组,并能够使用以下方法向数组添加评论:

comments << message

我只想要最后5条评论。有没有一个简单的方法(设置数组大小,使第六个数组的大小下降)来实现这一点,而不需要编写方法或存储每个注释,然后只显示最后5个?

最佳答案

您可以创建自己的数据结构,它可以很容易地用ruby包装数组的功能:

class CommentQueue

  include Enumerable

  def initialize(num = 5)
    @size = num
    @queue = Array.new
  end

  def each(&blk)
    @queue.each(&blk)
  end

  def pop
    @queue.pop
  end

  def push(value)
    @queue.shift if @queue.size >= @size
    @queue.push(value)
  end

  def to_a
    @queue.to_a
  end

  def <<(value)
    push(value)
  end

end

完成。

10-07 19:09
查看更多