我是TCL腳本的新手。我試圖在第5個位置插入一個元素(在列表中)。該列表最初沒有值(空列表)。在TCL中插入元素
我試過用「linsert」命令,但問題是它不能在我指定的位置插入一個元素。以下是代碼片段,
set newlist {}
set newlist [linsert $newlist 5 value_to_be_inserted]
此代碼亙古不插入元素在第五位,而它插入在第0個元素開始。我怎樣才能完成這項任務。
任何幫助對我的理解都會非常好。
我是TCL腳本的新手。我試圖在第5個位置插入一個元素(在列表中)。該列表最初沒有值(空列表)。在TCL中插入元素
我試過用「linsert」命令,但問題是它不能在我指定的位置插入一個元素。以下是代碼片段,
set newlist {}
set newlist [linsert $newlist 5 value_to_be_inserted]
此代碼亙古不插入元素在第五位,而它插入在第0個元素開始。我怎樣才能完成這項任務。
任何幫助對我的理解都會非常好。
您的列表中有零個元素。當沒有第5個位置插入時,你怎麼可能插入第5個位置?你期望得到的結果列表是什麼?我可以這麼想的唯一的事情就是讓後面的元素,5個空元素,你可以簡單地實現說
set newlist [list {} {} {} {} {} value_to_be_inserted]
如果你想的例如行爲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
}
謝謝你們的答案。我有一個誤解,元素可以插入到特定位置的空白列表中。 – 2013-04-23 17:58:21