Ruby中是否有一个包实现?

时间:2010-12-04 03:38:22

标签: ruby bag

是否有一个bag集合的实现(像集合一样的集合,它保留了插入对象的次数)?

2 个答案:

答案 0 :(得分:8)

当然!它也被称为multiset。这是一个nice ruby implementation.

答案 1 :(得分:6)

自己创作非常简单,对吧?

class Bag
  def initialize
    @h = Hash.new{ 0 }
  end
  def <<(o)
    @h[o] += 1
  end
  def [](o)
    @h[o]
  end
end

bag = Bag.new
bag << :a
bag << :b
bag << :a
p bag[:a], bag[:b], bag[:c], bag
#=> 2
#=> 1
#=> 0
#=> #<Bag:0x100138890 @h={:b=>1, :a=>2}>