Spec-Zone.ru › Tcl/Tk

копирование

Имя

oo::copy — создание копий объектов и классов

Синопсис

package require TclOO

oo::copy sourceObject ?targetObject?

Описание

Команда oo::copy создаёт копию объекта или класса. Она принимает имя копируемого объекта или класса, sourceObject, и необязательно имя объекта или класса для создания, targetObject, которое будет разрешено относительно текущего пространства имён, если это не полное квалифицированное имя. Если targetObject опущено, выбирается новое имя. Скопированный объект будет того же класса, что и исходный объект, и все его методы, относящиеся к объекту, будут скопированы. Если это класс, все методы класса также будут скопированы, но его экземпляры не будут скопированы.

После создания targetObject и копирования всех определений его конфигурации (например, методов, фильтров, миксинов), вызывается метод <cloned> объекта targetObject, чтобы разрешить настройку созданного объекта, например, установку связанных отслеживаний переменных. Единственным аргументом будет sourceObject. Стандартная реализация этого метода (в oo::object) просто копирует процедуры и переменные в пространстве имен sourceObject в пространство имен targetObject. Если вызов этого метода не возвращает успешного результата (т.е. ошибка или другой тип исключения), то targetObject будет удалён, и будет возвращена ошибка.

Результатом команды oo::copy будет полное квалифицированное имя нового объекта или класса.

Примеры

Этот пример создаёт объект, копирует его, изменяет исходный объект и демонстрирует, что скопированный объект действительно является копией.
oo::object create src
oo::objdefine src method msg {} {puts foo}
oo::copy src dst
oo::objdefine src method msg {} {puts bar}
src msg              → prints "bar"
dst msg              → prints "foo"

См. также

oo::class, oo::define, oo::object

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/copy.htm

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/copy.htm

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API