Книга: Программирование на языке 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]
- 8.1.1. Создание и инициализация массива
- 8.1.2. Доступ к элементам массива и присваивание им значений
- 8.1.3. Определение размера массива
- 8.1.4. Сравнение массивов
- 8.1.5. Сортировка массива
- 8.1.6. Выборка из массива по заданному критерию
- 8.1.7. Специализированные функции индексирования
- 8.1.8. Реализация разреженной матрицы
- 8.1.9. Массивы как математические множества
- 8.1.10. Рандомизация массива
- 8.1.11. Многомерные массивы
- 8.1.12. Нахождение элементов, принадлежащих одному массиву и не принадлежащих другому
- 8.1.13. Преобразование или отображение массивов
- 8.1.14. Удаление из массива элементов равных nil
- 8.1.15. Удаление заданных элементов из массива
- 8.1.16. Конкатенирование массивов и добавление в конец массива
- 8.1.17. Использование массива в качестве стека или очереди
- 8.1.18. Обход массива
- 8.1.19. Преобразование массива в строку с разделителями
- 8.1.20. Обращение массива
- 8.1.21. Удаление дубликатов из массива
- 8.1.22. Чередование массивов
- 8.1.23. Вычисление частоты различных значений в массиве
- 8.1.24. Инвертирование массива для получения хэша
- 8.1.25. Синхронная сортировка нескольких массивов
- 8.1.26. Указание значения по умолчанию для новых элементов массива
- Значения по умолчанию
- 8.2.12. Создание хэша из массива
- 8.1.10. Рандомизация массива
- 8.1.1. Создание и инициализация массива
- 8.1.3. Определение размера массива
- Ответный файл, используемый по умолчанию (csc.rsp)
- Выражения в значениях по умолчанию для доменов
- Создание свободно позиционируемых элементов
- Значения переменных по умолчанию
- Новые функции API для работы с Blob и массивами
- 1. Пустые значения (Empty-значения)
- 2. Неопределенные значения (Null-значения)