Глобальный массив в TCL - PullRequest
0 голосов
/ 17 мая 2018

Я хочу знать, как создать или создать глобальный массив в TCL , чтобы получить доступ к нему внутри Procedure. Я имею в виду, если у меня есть Procedure, и я хочу получить значения Array, чтобы использовать его внутри процедуры, как я могу это сделать?

1 Ответ

0 голосов
/ 17 мая 2018

Вы можете использовать global для доступа к массиву.Например,

array set myArr {a 1 b 2 c 3}

proc foo {} {
    global myArr
    parray myArr
}

foo
#=> myArr(a) = 1
#=> myArr(b) = 2
#=> myArr(c) = 3

Использование доступа к глобальному namespace с использованием :::

proc bar {} {
    parray ::myArr
}
#=> ::myArr(a) = 1
#=> ::myArr(b) = 2
#=> ::myArr(c) = 3

Вы также можете использовать upvarи uplevel, они могут или не могут быть легче для понимания в зависимости от вашего опыта работы с Tcl;они требуют от вас понимания уровней (или стековых фреймов).По сути, глобальное пространство имен находится на уровне 0 или # 0, и каждый раз, когда вы входите в proc, вы переходите на 1 уровень глубже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...