为什么这不起作用? (我希望'put $ top'打印“vega”):
set top vega
namespace eval ::other {set top NULL}
puts $top ;
输出:
NULL
答案 0 :(得分:2)
答案详见:http://tcl.tk/man/tcl8.5/TclCmd/namespace.htm#M26
因为您没有将“top”声明为该命名空间中的变量,所以set
命令继续到全局命名空间以解析名称top
你可能打算
set top vega
namespace eval ::other {
variable top
set top NULL
}
puts $top ;# outputs "vega"
puts $other::top ;# outputs "NULL"
但请阅读顶部所有皱纹的链接