2013-07-25 66 views
1

嗨我想知道如何將集合轉換成列表在tcl中。我得到的輸出是以集合的形式出現,但我想將其更改爲列表。收藏到列表中tcl

+2

我不知道Tcl上下文中的「collection」是什麼意思。請詳細說明。 –

+0

也許,你可以顯示你的輸入(集合)的樣子,以及你想要輸出(列表)的樣子。 –

+1

也許他是指字典或(TclX)鍵控列表? –

回答

3

通常,我們在使用TCL的某些工具(例如Synopsys的Design compiler)轉儲/查詢數據時使用集合。這些集合看起來像列表,但不能用於普通列表命令。要訪問它們,您需要使用「foreach_in_collection」命令,並且需要使用get_object_name(或等價的命令)並需要構建get_object_name輸出的列表(lappend)。從這個列表中你可以使用所有的TCL列表操作。

foreach_in_collection和get_object_name是特定於工具的命令,無法在TCL中找到,它們只能通過工具接口運行。

希望這會有所幫助。

2

假設你使用的是一些Synopsys的工具:

set MyList [get_object_name $MyCollection] 

以上應您的收藏轉換到一個列表。

3

用戶很可能會在談論Synopsys Tcl「集合」 - 這是由Synopsys等EDA供應商提供的擴展,用於支持Tcl API中的對象列表。

我遲到了,但這個簡單的過程就是你大多數時間想要的。請注意,由於您將映射集合到對象「名稱」列表,因此您正在使用此映射丟失信息:

proc col2list { col } { 
    set list "" 
    foreach_in_collection c $col { lappend list [get_object_name $c] } 
    return $list 
}