gpt4 book ai didi

variables - TCL命名空间中的变量

转载 作者:行者123 更新时间:2023-12-04 17:20:39 24 4
gpt4 key购买 nike

我有一个关于 TCL 命名空间中的变量的问题。

我有两个.tcl文件,a.tcl,b.tcl,我在这两个文件中定义了相同的全局变量,例如:

a.tcl

variable same "hello1"

b.tcl
variable same "hello2"
proc use {} {
puts same
}

但是在 b.tcl 中,我尝试定义一个 proc 来使用变量“ same”,这是冲突吗?在 proc use() 中使用的是哪个相同的?

最佳答案

从您的问题(以及对 Donal 的评论)看来,您认为文件与命名空间有关。这种想法是不正确的。

a.tcl

variable same "hello a" ;# global namespace

b.tcl
variable same "hello b" ;# global namespace
proc use {} {
variable same ;# reads from the global namespace
puts $same ;# will puts "hello a" or "hello b" depending on whether
;# a.tcl is sourced after b.tcl or not
}

tcl
namespace eval ::not_the_global {
variable same "hello c" ;# a different namespace, and a different variable than
;# the one from the previous two files
}

d.tcl
namespace eval ::not_the_global {
proc use {} { ;# a different use proc from the one in b.tcl
variable same ;# the variable defined in this namespace in c.tcl
puts $same ;# will output "hello c" no matter is a.tcl or b.tcl
;# were sourced
}
}

这个故事的寓意是代码所在的文件与命名空间或其他任何东西无关。对于位于单独命名空间中的命令或变量,它必须明确放置在那里。

关于variables - TCL命名空间中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9358461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com