【问题标题】:Tcl array get does not work with :: in procTcl 数组 get 不适用于 proc 中的 ::
【发布时间】:2016-02-24 14:07:00
【问题描述】:
请看下面的 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
【问题讨论】:
标签:
arrays
tcl
global
environment
【解决方案1】:
在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
%