2013-09-05 170 views
0

我想在tcl中使用一個列表數組。這是我如何初始化它:是否可以在TCL中創建一個列表數組?

for {set i 0} {$i<5} {incr i} { 
    set defer_req$i {} 
} 

它的工作正常。但是當我在程序中使用這些列表時,它會給出一個錯誤「無法讀取defer_req,沒有這樣的變量」。請幫助我

回答

4

您還沒有創建數組。您已經創建了一組具有「defer_req」前綴和數字後綴的變量。如Tcl手冊的variable syntax部分所述,數組尋址使用圓括號。所以,你的賦值語句應該是

set defer_req($i) {} 

並在以後的代碼,使用這個,你可以使用這樣的:

puts $defer_req($memberName) 

您不必使用數組 - 你可以留下你的代碼,因爲它站立,創建一組類似命名的變量。在這種情況下使用的值,你將需要:

puts [set defer_req$memberName] 

它首先運行SET語句(括號內的部分)和$擴展到成員名稱後綴創建完整的變量名。然後只有一個參數的set command返回指定變量的值。

天真版本($ defer_req $ memberName)會嘗試替換名爲defer_req的變量的值,並將其值與名爲memberName的變量的值連接起來。

1
array set ar {} 
set ar(key) {} 
for {set i 0} {$i < 100} {incr i} { 
    lappend ar(key) $i 
} 
puts $ar(key) 
相關問題