Tcl 数组 get 不适用于 :: 在进程中



请参阅下面的 Tcl 代码:

proc foo {} {
    puts "env get is:[array get ::env "DODA" ]"
}
set env("DODA") bar
foo
exit

我希望输出会
env get is:{DODA bar}
相反,它只返回数组 get 的空列表,即:
env get is:
知道我做错了什么吗?这是 Tcl 8.5

Tcl中,数组是关联数组。这样,当涉及到数组的索引时,双引号和大括号的行为就像单独的实体。

% set user(name) dinesh
dinesh
% set user("name") DINESH
DINESH
% set user({name}) Dinesh
Dinesh
% parray user
user("name") = DINESH
user(name)   = dinesh
user({name}) = Dinesh
% array size user
3

如您所见,条目name"name"{name}是不同的。

现在,在您的情况下,您已经创建了带有双引号的索引"DODA"

% set env("DODA") bar
bar
% puts "env get is:[array get ::env "DODA" ]"
env get is:{"DODA"} bar
%

否则,

% set env(DODA) bar
bar
% puts "env get is:[array get ::env DODA ]"
env get is:DODA bar
%

相关内容

最新更新