Method: Immutable::Vector#set
- Defined in:
- lib/immutable/vector.rb
#set(index, item) ⇒ Vector #set(index) {|existing| ... } ⇒ Vector
Return a new Vector with a new value at the given index. If index is greater than the length of the vector, the returned vector will be padded with ‘nil`s to the correct size.
165 166 167 168 169 170 171 172 173 174 175 |
# File 'lib/immutable/vector.rb', line 165 def set(index, item = yield(get(index))) raise IndexError, "index #{index} outside of vector bounds" if index < -@size index += @size if index < 0 if index > @size suffix = Array.new(index - @size, nil) suffix << item replace_suffix(@size, suffix) else update_root(index, item) end end |