2013-04-22 118 views
0

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

我试过用“linsert”命令,但问题是它不能在我指定的位置插入一个元素。以下是代码片段,

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

此代码亘古不插入元素在第五位,而它插入在第0个元素开始。我怎样才能完成这项任务。

任何帮助对我的理解都会非常好。

回答

3

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

set newlist [list {} {} {} {} {} value_to_be_inserted] 
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 
} 
+0

谢谢你们的答案。我有一个误解,元素可以插入到特定位置的空白列表中。 – 2013-04-23 17:58:21