我是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