Шрифт:
И
Иногда необходимо глубокое копирование, при котором копируется все дерево объектов с корнем в исходном объекте. В этом случае между оригиналом и копией гарантированно не будет никакой интерференции. Ruby не предоставляет встроенного метода для глубокого копирования, но есть приемы, позволяющие достичь желаемого результата.
Самый «чистый» способ — потребовать, чтобы классы реализовывали метод
Но есть и более быстрый способ с использованием модуля
Обратите внимание, что изменение строки через
11.1.10. Метод initialize_copy
При копировании объекта методом
Но что делать, если вам такое поведение не нужно? Рассмотрим пример:
При создании объекта
Для этого нужно определить метод
Отметим, что метод
Кстати, если метод