gpt4 book ai didi

namespaces - TCL 从命名空间外的 proc 调用命名空间变量

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

我几乎是一个新手,我试图在使用 argv 的命名空间中设置一些变量,然后从命名空间之外的 proc 调用它们,但我无法理解如何执行此操作。我正在尝试使用一些这样的代码(但显然这是错误的方法):

namespace eval Ns {
variable spec [lindex $argv 1]
}

proc p {} {
set spec "::Ns::spec"

}

最佳答案

正确的方法是使用variable :

proc p {} {
variable ::Ns::spec
# ...
}

也可能是 upvar :
proc p {} {
upvar #0 ::Ns::spec spec
# ...
}

或(几乎)像你一样:
proc p {} {
set spec $::Ns::spec
# ...
}

如果在 proc 中更改了变量,则最后一种可能性不会更改该变量。

关于namespaces - TCL 从命名空间外的 proc 调用命名空间变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15712153/

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