2010-12-04 40 views
5

是否有包集合的实现(集合就像一个集合,它保存了一个对象被插入的次数)?Ruby中是否有包实现?

+0

我在寻找尽可能标准的东西。我更喜欢核心库到宝石和宝石代码,甚至不是宝石。 – 2010-12-20 00:14:07

回答

7

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

+0

该文档讨论以root身份运行脚本。是否有包含它的ubuntu软件包? – 2010-12-04 03:58:58

+0

不是我所知道的......看起来你必须从那边获得源代码并在你的最后建立它。 – 2010-12-04 04:02:44

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}>