2013-04-22 3 views
0

Я новичок в написании сценариев TCL. Я пытаюсь вставить элемент (в список) в 5-ю позицию. Первоначально этот список не имеет значений (пустой список).Вставка элемента в TCL

Я попробовал команду linsert, но проблема в том, что она не может вставить элемент в указанное мной положение. Ниже приведен фрагмент кода,

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

Этот код оленья кожа вставляет элемент в 5-м положении, а он вставляет в начале в 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

Спасибо, ребята, за ответы. У меня возникло недоразумение, что элементы могут быть вставлены в пустой список в определенных положениях. –

Смежные вопросы