TCL在apply中使用命名空间

时间:2016-07-16 05:04:11

标签: namespaces tcl

我有以下代码

set result {}
apply {x {expr {$x*100}} ns2} {1,2,4}

在上面的代码中,命名空间的重要性是什么,如何使用命名空间变量或将结果存储到命名空间

1 个答案:

答案 0 :(得分:1)

让我们获取命名空间和命名空间变量:

% namespace eval example {variable result 0}

使用variable命令将名称result声明为lambda中的命名空间变量:

% apply {x {variable result ; set result [expr {$x * 100}]}} 3
% set ::example::result
# => 0
% set ::result
# => 300

lambda使用全局命名空间,因为我们没有指定任何命名空间。

% apply {x {variable result ; set result [expr {$x * 100}]} ::example} 3
% set ::example::result
# => 300

就是这样。

文档: * (operator)applyexprnamespacesetvariable