Переменная
Имя
Переменная — создание и инициализация переменной пространства именСинопсис
переменная имяпеременная ?имя значение...?
Описание
Эта команда обычно используется внутри команды 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