【发布时间】:2015-08-18 02:22:01
【问题描述】:
假设我有一个 tcl 脚本,我想将一些参数传递给第二个脚本文件,该文件来自第一个 tcl:
#first tcl file
source second.tcl
我想从 first.tcl 控制 second.tcl 的流,我读到 tcl 源不接受参数。我想知道我该怎么做。
【问题讨论】:
-
源文件有参数意味着什么?什么会处理源文件中的参数?
标签: tcl
假设我有一个 tcl 脚本,我想将一些参数传递给第二个脚本文件,该文件来自第一个 tcl:
#first tcl file
source second.tcl
我想从 first.tcl 控制 second.tcl 的流,我读到 tcl 源不接受参数。我想知道我该怎么做。
【问题讨论】:
标签: tcl
source 不接受任何附加参数。但是您可以使用(全局)变量来传递参数,例如:
# first tcl file
set ::some_variable some_value
source second.tcl
第二个TCL文件可以引用变量,例如:
# second tcl file
puts $::some_variable
备注:
源文件意味着源脚本的内容在当前上下文中执行。这意味着源脚本可以访问该上下文中存在的所有变量。上面的代码是一样的:
# one joint tcl file
set ::some_variable some_value
puts $::some_variable
【讨论】:
::。它只是意味着这个变量是在全局命名空间中创建的。
关于“::”的事情——见解释here(对不起,我还没有足够的代表离开cmets)。
我还应该补充一点,最初的问题讨论了一个看起来很奇怪的问题:似乎最好在您的第二个源文件中提供一个特定的过程,该过程将设置与定义的内容有关的状态那个脚本。 比如:
source file2.tcl
setup_state $foo $bar $baz
使[source] 的行为基于某些全局变量而有所不同,这对我来说太晦涩难懂了。当然,您可能有正当理由这样做,但无论如何......
【讨论】: