在TCL中插入元素

时间:2013-04-22 18:42:39

标签: list tcl

我是TCL脚本新手。我试图在第5个位置插入一个元素(在列表中)。这个列表最初没有值(空列表)。

我尝试使用“linsert”命令,但问题是它无法在我指定的位置插入元素。以下是代码段

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

此代码不会将元素插入第5个位置,而是在第0个元素的开头插入。我怎样才能完成这项任务。

任何帮助对我的理解都非常有益。

2 个答案:

答案 0 :(得分:3)

您的列表中没有元素。当没有第5个位置插入时,如何插入第5个位置?你期望得到什么样的清单?我唯一能想到的就是在你的元素后面加上5个空元素,只需说出

即可实现。
set newlist [list {} {} {} {} {} value_to_be_inserted]

答案 1 :(得分: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
}