2013-04-22 53 views
1

可以在tcl列表聲明中使用變量嗎? 我有以下簡單的例子:如何在聲明tcl列表時使用變量的值

set grape_color "green" 

set produce_list {\ 
    { PRODUCE COLOR    REGION }\ 
    { APPLE "red"    TX }\ 
    { GRAPE $grape_color  CA }\ 
} 

puts $produce_list 

代碼的輸出是這樣的:

{ PRODUCE COLOR    REGION } 
{ APPLE "red"    TX } 
{ GRAPE $grape_color  CA } 

,但我想要的「綠色」,而不是在列表中$grape_color

回答

5

您可以使用的一種方法是使用list命令。

set grape_color green 
set produce_list [list \ 
    [list PRODUCE COLOR  REGION] \ 
    [list APPLE red   TX] \ 
    [list GRAPE $grape_color CA]] 

另一種方法是通過使用subst命令。

set grape_color green 
set produce_list { 
    { PRODUCE COLOR  REGION } 
    { APPLE red   TX } 
    { GRAPE $grape_color CA } 
} 
set produce_list [subst -nobackslashes -nocommands $produce_list] 
+0

兩者都有效。非常感謝 – 2013-04-22 03:51:18

+2

我建議使用第一個選項(儘管它很醜);第二個將會遇到多字替換問題(例如「檸檬黃」)。 – 2013-04-22 09:09:38

+0

我認爲應該謹慎的解釋這種行爲,即大括號防止變量替換 – user1207217 2013-04-22 16:32:08