2016-02-24 35 views
1

請參見下面的代碼的Tcl:Tcl的數組GET不PROC與::工作

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

我期望的輸出將
env get is:{DODA bar}
相反,它只是返回空列表,對於數組得到,即:
env get is:
任何想法我做錯了什麼?這是Tcl 8.5

回答

3

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 
% 
+0

好了,梳理出來...乾杯。 – user1134991