【发布时间】:2020-12-06 06:32:38
【问题描述】:
我正在尝试在 tcl 中编写一个脚本来对 VMD 执行一些分析。首先我在一个过程中创建一个原子选择,然后我尝试在另一个过程中使用它。
VMD 的原子选择是作为 Tcl 函数实现的。从atomselect 返回的数据是要使用的函数的名称。你可以阅读更多here。
当我在proc 之外创建原子选择时,我可以在其中使用它,只需将它作为global 传递。但是现在我在其中创建它,当我尝试使用它时,它只是一个带有过程名称的字符串。
正在恢复,
这行得通:
set all [atomselect top all]
proc test {} {
global all
$all num
}
test # Outuputs 7111
但这不是:
proc create {} {
global all
set all [atomselect top all]
}
proc test {} {
global all
$all num
}
create
test # Outputs -> invalid command name "atomselect1"
【问题讨论】:
-
我认为如果您将
$all num放在与atomselect相同的过程中它会起作用?这意味着我们正在谈论具有范围绑定的真正恶作剧,这非常不寻常,因为它会导致这样的意外。 -
@DonalFellows 是的,它在
create过程中工作。 -
谢谢;这足以让我说出发生了什么。