Tcl 如何通过传递参数来获取脚本文件的源代码?

Tcl 如何通过传递参数来获取脚本文件的源代码?,tcl,Tcl,假设我有一个tcl脚本,我想将一些参数传递给第二个脚本文件,该文件源于第一个tcl: #first tcl file source second.tcl 我想从first.tcl控制second.tcl的流,我读到tcl source不接受参数。我不知道该怎么办。source不接受任何附加参数。但您可以使用(全局)变量传递参数,例如: # first tcl file set ::some_variable some_value source second.tcl 第二个TCL文件可以引用

假设我有一个tcl脚本,我想将一些参数传递给第二个脚本文件,该文件源于第一个tcl:

#first tcl file

source second.tcl

我想从first.tcl控制second.tcl的流,我读到tcl source不接受参数。我不知道该怎么办。

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
关于“:”这件事——请看解释(对不起,我还没有足够的代表留下评论)

我还应该补充一点,原来的问题讨论了一个似乎很奇怪的问题:似乎最好在第二个源文件中提供一个特定的过程,该过程将设置与该脚本定义的内容相关的状态。 比如:

source file2.tcl
setup_state $foo $bar $baz

[source]
根据一些全局变量做出不同的行为对我来说太模糊了。当然,你可能有正当的理由这样做,但无论如何…

正是如此!但请解释一下“:”的含义。我可以省略吗?它是干什么用的?在那个例子中,你可以省略
。这仅仅意味着这个变量是在全局名称空间中创建的。我完全同意,通常最好在源代码脚本中指定一个过程,并用参数调用该过程。甚至用参数来源代码文件意味着什么?如何处理源文件中的参数?