Spec-Zone.ru › Tcl/Tk

Переменная

Имя

Переменная — создание и инициализация переменной пространства имен

Синопсис

переменная имя
переменная ?имя значение...?

Описание

Эта команда обычно используется внутри команды namespace eval для создания одной или нескольких переменных внутри пространства имен. Каждая переменная имя инициализируется значением. Значение для последней переменной является необязательным.

Если переменная имя не существует, она создаётся. В этом случае, если значение указано, оно присваивается вновь созданной переменной. Если значение не указано, новая переменная остаётся неопределённой. Если переменная уже существует, она устанавливается в значение, если значение указано, или остаётся без изменений, если значение не указано. Обычно имя не квалифицировано (не включает имена каких-либо содержащих пространств имен), и переменная создаётся в текущем пространстве имен. Если имя включает квалификаторы пространства имен, переменная создаётся в указанном пространстве имен. Если переменная не определена, она будет видна команде namespace which, но не команде info exists.

Если команда переменная выполняется внутри процедуры Tcl, она создаёт локальные переменные, связанные с соответствующими переменными пространства имен (и, следовательно, эти переменные перечислены командой info vars.) Таким образом, команда переменная напоминает команду global, хотя команда global связывается только с переменными в глобальном пространстве имен. Если заданы какие-либо значения, они используются для изменения значений соответствующих переменных пространства имен. Если переменная пространства имен не существует, она создаётся и, при необходимости, инициализируется.

Аргумент имя не может ссылаться на элемент внутри массива. Вместо этого имя должно ссылаться на весь массив, а инициализирующее значение должно быть опущено. После объявления переменной элементы массива можно установить с помощью обычных команд set или array.

Примеры

Создать переменную в пространстве имен:
namespace eval foo {
    variable bar 12345
}

Создать массив в пространстве имен:

namespace eval someNS {
    variable someAry
    array set someAry {
        someName  someValue
        otherName otherValue
    }
}

Доступ к переменным в пространствах имен из процедуры:

namespace eval foo {
    proc spong {} {
        # Variable in this namespace
        variable bar
        puts "bar is $bar"

        # Variable in another namespace
        variable ::someNS::someAry
        parray someAry
    }
}

См. также

global, namespace, upvar

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

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

Spec-Zone.ru

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