2013-04-22 117 views
0

我是TCL腳本的新手。我試圖在第5個位置插入一個元素(在列表中)。該列表最初沒有值(空列表)。在TCL中插入元素

我試過用「linsert」命令,但問題是它不能在我指定的位置插入一個元素。以下是代碼片段,

set newlist {} 
set newlist [linsert $newlist 5 value_to_be_inserted] 

此代碼亙古不插入元素在第五位,而它插入在第0個元素開始。我怎樣才能完成這項任務。

任何幫助對我的理解都會非常好。

回答

3

您的列表中有零個元素。當沒有第5個位置插入時,你怎麼可能插入第5個位置?你期望得到的結果列表是什麼?我可以這麼想的唯一的事情就是讓後面的元素,5個空元素,你可以簡單地實現說

set newlist [list {} {} {} {} {} value_to_be_inserted] 
3

如果你想的例如行爲JavaScript,其中如果索引大於長度,那麼列表將被擴展爲空元素,我認爲您必須創建一個過程。

proc expandInsert {list index args} { 
    set nEmpties [expr {$index - [llength $list]}] 
    if {$nEmpties > 0} { 
    lappend list {*}[lrepeat $nEmpties ""] 
    } 
    # insert or append args 
    return $list 
} 
+0

謝謝你們的答案。我有一個誤解,元素可以插入到特定位置的空白列表中。 – 2013-04-23 17:58:21