Книга: Программирование на языке Ruby

8.1.26. Указание значения по умолчанию для новых элементов массива

8.1.26. Указание значения по умолчанию для новых элементов массива

Когда массив растет и в нем создаются новые элементы, по умолчанию им присваивается значение nil:

a = Array.new
a[0]="x"
a[3]="y"
# а равно ["x", nil, nil, "y"]

Но, допустим, нам требуется, чтобы новые элементы получали другое значение. Тогда в качестве конкретного применения общего принципа предлагаем класс ZArray, описывающий массив, в котором вновь созданные элементы будут равны 0:

class ZArray < Array
 def [](x)
  if x > size
   for i in size+1..x
    self[i]=0
   end
  end
  v = super(x)
 end
 def []=(x,v)
  max = size
  super(x,v)
  if size - max > 1
   (max..size-2).each do |i|
    self[i] = 0
   end
  end
 end
end
num = Zarray.new
num[1] = 1
num[2] = 4
num[5] = 25
# num равно [0, 1, 4, 0, 0, 25]

Оглавление книги

Оглавление статьи/книги

Генерация: 1.476. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз