Книга: Программирование на языке 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)

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


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