我是TCL编程的新手。 我在目录中有大量文件,我想要全部采购。但问题是,有许多文件包含相同的变量名称。那么如何解决这个冲突以及如何使用文件名分别访问变量。 我正在考虑使用命名空间,这是完成此任务的正确方法。
在python中我可以在导入后使用fileName.variable。有没有办法在TCL中做到这一点。
任何帮助都会非常感激。
答案 0 :(得分:3)
使用命名空间是一种很好的方法
foreach file [glob *.tcl] {
set ns [file rootname $file] ;# remove ".tcl" extension
namespace eval $ns {source $file}
}
测试
$ cat a.tcl
set hello world
proc foo {} {return bar}
$ tclsh
% set file a.tcl
a.tcl
% set ns [file rootname $file]
a
% namespace eval $ns {source $file}
% puts $hello
can't read "hello": no such variable
% puts $a::hello
world
% foo
invalid command name "foo"
% a::foo
bar