我创建了这个:
# file1.tcl
namespace eval myNS {
namespace ensemble create -command ::make
namespace export cmd1 cmd2 cmd3
}
我刚刚意识到,如果我将另一个过程
cmd4
添加到另一个文件中的导出命名空间中,如下所示:
# file2.tcl
namespace eval myNS {
namespace export cmd4
}
我也可以这样写
make cmd4 $args
我的问题是:是否可以将其限制为
cmd1 cmd2 cmd3
命令?
您可以在创建集成时使用
-subcommands
选项来限制可用内容,而不是使用所有导出命令的默认值:
namespace eval myNS {
namespace ensemble create -command ::make -subcommands {cmd1 cmd2 cmd3}
namespace export cmd1 cmd2 cmd3
}
加载两个文件后,
make cmd4
会报错,但myNS::cmd4
仍然可以用namespace import
导入或直接调用;只是不是通过乐团。