2016-07-16 25 views
0

我有下面的代碼TCL使用的命名空間中適用

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

在上面的代碼是什麼名稱空間的重要性,我該如何使用命名空間變量或結果保存到命名空間

回答

1

讓我們得到一個命名空間和命名空間變量:

% namespace eval example {variable result 0} 

使用variable命令申報名稱result是拉姆達內的命名空間的變量:

% 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

+0

彼得一世需要爲TCL代碼緊急幫助,你能幫助我。我需要聊天,有什麼方法可以跟你說話。 –

+0

彼得可以請你給我留言@ ace.kartik gmail。 –

+1

@KartikV:對不起,我只在Stackoverflow上回答問題。 –