我是 TCL 脚本的新手。我正在尝试在第 5 个位置插入一个元素(在列表中)。此列表最初没有任何值(空列表)。
我尝试使用“linsert”命令,但问题是它无法在我指定的位置插入元素。以下是代码片段,
set newlist {}
set newlist [linsert $newlist 5 value_to_be_inserted]
此代码不会在第 5 个位置插入元素,而是在第 0 个元素的开头插入。我怎样才能完成这项任务。
任何帮助对我的理解都会有很大帮助。
如果您想要例如 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
}
您的列表有零个元素。当没有第 5 个位置可以插入时,你怎么可能在第 5 个位置插入?您期望得到什么结果列表?我唯一能想到的就是在你的元素后面有 5 个空元素,你可以简单地通过说
set newlist [list {} {} {} {} {} value_to_be_inserted]