Книга: Программирование на языке Ruby
10.2.3. Ограниченное «глубокое копирование» в ходе маршалинга
10.2.3. Ограниченное «глубокое копирование» в ходе маршалинга
В Ruby нет операции «глубокого копирования». Методы dup
и clone
не всегда работают, как ожидается. Объект может содержать ссылки на вложенные объекты, а это превращает операцию копирования в игру «собери палочки».
Ниже предлагается способ реализовать глубокое копирование с некоторыми ограничениями, обусловленными тем, что наш подход основан на использовании класса Marshal
со всеми присущими ему недостатками:
def deep_copy(obj)
Marshal.load(Marshal.dump(obj))
end
a = deep_copy(b)
Оглавление статьи/книги
- 10.2.1. Простой маршалинг
- 10.2.2. Более сложный маршалинг
- 10.2.3. Ограниченное «глубокое копирование» в ходе маршалинга
- 10.2.4. Обеспечение устойчивости объектов с помощью библиотеки PStore
- 10.2.5. Работа с данными в формате CSV
- 10.2.6. Маршалинг в формате YAML
- 10.2.7. Преобладающие объекты и библиотека Madeleine
- 10.2.8. Библиотека DBM
Похожие страницы
- Резервное копирование базы данных InterBase
- Резервное копирование многофайловых баз данных
- Резервное копирование при работе InterBase в режиме 24x7
- 8.2.8. Копирование хэша в массив
- Резервное копирование
- При входе в систему появляется сообщение о невозможности найти какой-то файл. Как его убрать?
- В ходе экспериментов отключил Internet Explorer, теперь не могу его включить
- Глава 13 Резервное копирование и восстановление
- 13.5.1. Копирование
- Копирование и перемещение фрагментов текста
- Перемещение и копирование файлов и папок
- Перемещение и копирование ячеек с помощью кнопки мыши