Spec-Zone.ru › Tcl/Tk

объект

НАЗВАНИЕ
oo::object — базовый класс иерархии классов
СИНОПСИС
ИЕРАРХИЯ КЛАССОВ
ОПИСАНИЕ
КОНСТРУКТОР
ДЕСТРУКТОР
ЭКСПОРТИРОВАННЫЕ МЕТОДЫ
obj destroy
НЕЭКСПОРТИРОВАННЫЕ МЕТОДЫ
obj eval ?arg ...?
obj unknown ?methodName? ?arg ...?
obj variable ?varName ...?
obj varname varName
obj <cloned> sourceObjectName
ПРИМЕРЫ
СМОТРИ ТАКЖЕ
КЛЮЧЕВЫЕ СЛОВА

Имя

oo::object — базовый класс иерархии классов

Синопсис

package require TclOO

oo::object метод ?arg ...?

Иерархия классов

oo::object

Описание

Класс oo::object является базовым классом иерархии объектов; каждый объект является экземпляром этого класса. Поскольку классы сами по себе являются объектами, они тоже являются экземплярами этого класса. Объекты всегда ссылаются на своё имя и могут быть переименованы (rename), сохраняя при этом свою идентичность.

Экземпляры объектов могут быть созданы с помощью методов create или new самого объекта oo::object, или вызвав эти методы на любом из подклассов; подробнее см. oo::class. Конфигурацию отдельных объектов (т. е., специфичные для экземпляра методы, смешанные классы и т. д.) можно контролировать с помощью команды oo::objdefine.

Каждый объект имеет уникальное пространство имен, связанное с ним, пространство имен экземпляра. Это пространство имен содержит все переменные экземпляра объекта и будет текущим пространством имен всякий раз, когда вызывается метод объекта (включая метод класса объекта). При уничтожении объекта его пространство имен экземпляра удаляется. Пространство имен экземпляра содержит команду my объекта, которая может быть использована для вызова неэкспортированных методов объекта или для создания ссылки на объект для вызова, которая сохраняется при переименовании объекта.

Конструктор

Класс oo::object не определяет явного конструктора.

Деструктор

Класс oo::object не определяет явного деструктора.

Экспортированные методы

Класс oo::object поддерживает следующие экспортированные методы:
obj destroy
Этот метод уничтожает объект, obj, на котором он вызван, вызывая при этом все деструкторы класса объекта. Он эквивалентен использованию rename для удаления команды объекта. Результатом этого метода всегда является пустая строка.

Неэкспортированные методы

Класс oo::object поддерживает следующие неэкспортированные методы:
obj eval ?arg ...?
Этот метод конкатенирует аргументы, arg, как если бы с помощью concat, а затем выполняет полученный скрипт в пространстве имен, которое уникально связано с obj, возвращая результат выполнения.
obj unknown ?methodName? ?arg ...?
Этот метод вызывается, когда попытка вызвать метод methodName на объекте obj терпит неудачу. Аргументы, предоставленные пользователем методу, передаются как аргументы arg. Если methodName отсутствует, объект вызывался без имени метода вообще (или с любыми другими аргументами). По умолчанию (т. е., определённый классом oo::object) генерируется соответствующая ошибка, описывающая, какие методы поддерживает объект, с учётом того, был ли объект вызван своим публичным именем или через команду my.
obj variable ?varName ...?
Этот метод обеспечивает связывание каждой переменной, называемой varName, из уникального пространства имен объекта obj в контекст вызывающей стороны. Таким образом, если он вызывается внутри процедуры, то переменная пространства имен в объекте связана с локальной переменной в процедуре. Каждый аргумент varName не должен содержать разделителей пространства имён. Результат - пустая строка.
obj varname varName
Этот метод возвращает глобально квалифицированное имя переменной varName в уникальном пространстве имен для объекта obj.
obj <cloned> sourceObjectName
Этот метод используется командой oo::object для копирования состояния одного объекта в другой. Он отвечает за копирование процедур и переменных пространства имен исходного объекта (sourceObjectName) в текущий объект. Он не копирует никакие другие типы команд или какие-либо следы на переменных; это можно добавить, если нужно, переопределив этот метод в подклассе.

Примеры

Этот пример демонстрирует базовые операции с объектом.
set obj [oo::object new]
$obj foo             → error "unknown method foo"
oo::objdefine $obj method foo {} {
    my variable count
    puts "bar[incr count]"
}
$obj foo             → prints "bar1"
$obj foo             → prints "bar2"
$obj variable count  → error "unknown method variable"
$obj destroy
$obj foo             → error "unknown command obj"

См. также

my, oo::class

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

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

Spec-Zone.ru

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