名称空间集合创建:范围有限

问题描述 投票:0回答:1

我创建了这个:

# 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
命令?

tcl
1个回答
0
投票

您可以在创建集成时使用

-subcommands
选项来限制可用内容,而不是使用所有导出命令的默认值:

namespace eval myNS {
    namespace ensemble create -command ::make -subcommands {cmd1 cmd2 cmd3}
    namespace export cmd1 cmd2 cmd3
}

加载两个文件后,

make cmd4
会报错,但
myNS::cmd4
仍然可以用
namespace import
导入或直接调用;只是不是通过乐团。

© www.soinside.com 2019 - 2024. All rights reserved.