Method: Hamster::Vector#initialize

Defined in:
lib/hamster/vector.rb

#initialize(items = [].freeze) ⇒ Vector

Returns a new instance of Vector.



85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/hamster/vector.rb', line 85

def initialize(items=[].freeze)
  items = items.to_a
  if items.size <= 32
    items = items.dup.freeze if !items.frozen?
    @root, @size, @levels = items, items.size, 0
  else
    root, size, levels = items, items.size, 0
    while root.size > 32
      root = root.each_slice(32).to_a
      levels += 1
    end
    @root, @size, @levels = root.freeze, size, levels
  end
end