【发布时间】:2019-02-23 22:00:41
【问题描述】:
我正在尝试在 TCL 中使用 [dict] 命令。如果我在没有 ixc 命名空间的同一个本地文件中使用以下代码,并且在同一个文件中使用 procs,则以下代码可以完美运行。
但是,如果我尝试在源文件中使用它——它完全可以保释
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 [当前命名空间],但现在不知道该去哪里。任何帮助都会很可爱。 谢谢。
【问题讨论】:
-
不够继续:在你
set buttons(...) ...的那一点上,$button的价值是多少?
标签: dictionary tcl proc