В Ruby есть реализация пакетов? - PullRequest
5 голосов
/ 04 декабря 2010

Существует ли реализация коллекции bag (коллекция, подобная набору, в которой хранится счетчик количества вставок объекта)?

Ответы [ 2 ]

8 голосов
/ 04 декабря 2010
* 1000 Конечно *! Он также называется multiset . Вот хорошая реализация ruby.
6 голосов
/ 04 декабря 2010

Довольно просто создать самостоятельно, верно?

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