Я пытаюсь использовать команду [dict] в TCL.Следующий код работает безупречно, если я использую его в том же локальном файле без пространства имен ixc и с процессами в том же файле.
Однако, если я пытаюсь использовать его в исходном файле - он полностью освобождает от ответственности
rawrIxc.tcl
namespace eval ixc {
}
proc ixc::add2Dict {var1 var2 var3 var4} {
variable $var1
puts "ixc:: $var1 $var2 $var3 $var4" ;#Debug in console, shows passed params
dict set $var1 $var2 $var3 $var4
}
proc ixc::getFromDict {var1 var2 var3} {
variable $var1
puts "something: $var1 $var2 $var3"
dict get $var1 $var2 $var3
}
rawrSiteButtons.tcl
Добавляет данные в словарь.Я предполагаю
ixc::add2Dict "button" "comic" "buttonText" "💎 Comic" ;#Button text "comic"
ixc::add2Dict "button" "comic" "buttonUrl" "/comic" ;#Button URL
ixc::add2Dict "button" "comic" "buttonSymbol" "%1" ;#Actual button ID -- used in mapping
ixc::add2Dict "button" "comic" "urlSymbol" "%_1"]" ;#Button replacement symbol -- used in mapping
Однако, когда я сейчас пытаюсь вызвать данные из словаря со следующим
set buttons(comicText) [ixc::getFromDict $button comic buttonText]
set buttons(comicUrl) [ixc::getFromDict $button comic buttonUrl]
set buttons(comicSymbol) [ixc::getFromDict $button comic buttonSymbol]
set buttons(comicUrlSymbol) [ixc::getFromDict $button comic urlSymbol]
, я получаю:
can't read "button": no such variable
while executing
"ixc::getFromDict $button comic buttonText"
(procedure "loadSiteButtons" line 41)
, даже если яиспользуйте:
variable button
Я пробовал upvar, переменную и пространство имен upvar [текущее пространство имен] и теперь не знаю, куда идти.Любая помощь будет прекрасна.Спасибо.