0

我是 TCL 脚本的新手。我正在尝试在第 5 个位置插入一个元素(在列表中)。此列表最初没有任何值(空列表)。

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

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

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

任何帮助对我的理解都会有很大帮助。

4

2 回答 2

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
}
于 2013-04-23T04:43:54.047 回答
3

您的列表有零个元素。当没有第 5 个位置可以插入时,你怎么可能在第 5 个位置插入?您期望得到什么结果列表?我唯一能想到的就是在你的元素后面有 5 个空元素,你可以简单地通过说

set newlist [list {} {} {} {} {} value_to_be_inserted]
于 2013-04-22T18:44:36.267 回答