我希望能够存储一个用户最近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
完成。