我是TCL脚本新手。我试图在第5个位置插入一个元素(在列表中)。这个列表最初没有值(空列表)。
我尝试使用“linsert”命令,但问题是它无法在我指定的位置插入元素。以下是代码段
set newlist {}
set newlist [linsert $newlist 5 value_to_be_inserted]
此代码不会将元素插入第5个位置,而是在第0个元素的开头插入。我怎样才能完成这项任务。
任何帮助对我的理解都非常有益。
答案 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
}