Spec-Zone.ru › Tcl/Tk

scope

Имя

itcl::scope — захват контекста пространства имён для переменной

Синтаксис

itcl::scope имя

Описание

Создаёт переменную с областью видимости для указанного имени, которое должно быть именем переменной. Если имя является переменной-членом, то команда scope возвращает имя, которое в любом контексте будет разрешаться как переменная-член объекта объект. Точный формат этого имени является внутренней деталью Itcl. Использование такой переменной с областью видимости позволяет использовать переменные-члены вместе с виджетами. Например, если у вас есть объект с приватной переменной x, и вы можете использовать x в сочетании с опцией -textvariable виджета entry. До itcl3.0, только общие переменные могли быть использованы таким образом.

Если имя не является переменной-членом, то оно должно быть общей переменной или глобальной переменной. В этом случае команда scope возвращает полное квалифицированное имя переменной, например, ::foo::bar::x.

Если имя не распознаётся как переменная, команда scope возвращает ошибку.

Обычные имена переменных относятся к переменным в глобальном пространстве имён. Переменная с областью видимости захватывает имя переменной вместе с её контекстом пространства имён таким образом, чтобы её можно было правильно ссылаться на неё позже. Это необходимо, например, для упаковки имён переменных, когда виджет Tk используется в пространстве имён:

namespace foo {
    private variable mode 1

    radiobutton .rb1 -text "Mode #1" 
        -variable [scope mode] -value 1
    pack .rb1

    radiobutton .rb2 -text "Mode #2" 
        -variable [scope mode] -value 2
    pack .rb2
}
Радиокнопки .rb1 и .rb2 взаимодействуют через переменную "режим", содержащуюся в пространстве имён "foo". Команда scope гарантирует это, возвращая полностью квалифицированное имя переменной ::foo::режим.

Вы никогда не должны использовать синтаксис @itcl напрямую. Например, плохая идея написать код такого вида:

set {@itcl ::fred x} 3
puts "value = ${@itcl ::fred x}"
Вместо этого вы всегда должны использовать команду scope для динамического генерирования имени переменной. Затем вы можете передать это имя виджету или любому другому фрагменту кода в вашей программе.

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/ItclCmd/scope.htm

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/ItclCmd/scope.htm

Spec-Zone.ru

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