lset
Имя
lset — Изменение элемента в спискеСинопсис
lset varName ?index ...? newValueОписание
Команда lset принимает параметр varName, который интерпретируется как имя переменной, содержащей список Tcl. Она также принимает ноль или более индексов в списке. Индексы могут быть представлены либо последовательно в командной строке, либо сгруппированы в списке Tcl и представлены как один аргумент. Наконец, она принимает новое значение для элемента varName.Если индексы не представлены, команда имеет вид:
lset varName newValue
или
lset varName {} newValue В этом случае newValue заменяет старое значение переменной varName.
При представлении одного индекса, команда lset обрабатывает содержимое переменной varName как список Tcl. Она обращается к элементу под индексом в нём (0 соответствует первому элементу списка). При интерпретации списка lset соблюдает те же правила относительно фигурных скобок, кавычек и обратных слэшей, что и интерпретатор команд Tcl; однако, подстановка переменных и подстановка команд не выполняются. Команда строит новый список, в котором указанный элемент заменён на newValue. Этот новый список сохраняется в переменной varName, а также является возвращаемым значением команды lset.
Если индекс отрицательный или больше, чем количество элементов в $varName, то возникает ошибка.
Если индекс равен количеству элементов в $varName, то данный элемент добавляется в конец списка.
Интерпретация каждого простого значения индекса аналогична команде string index, поддерживая арифметику простых индексов и индексы, относящиеся к концу списка.
Если предоставляются дополнительные аргументы индекса, каждый из них используется по очереди для обращения к элементу в подсписке, определённом предыдущей операцией индексирования, что позволяет скрипту изменять элементы в подсписках (или добавлять элементы в подсписки). Команда,
lset a 1 2 newValue
или
lset a {1 2} newValue заменяет элемент 2 подсписка 1 на newValue.
Целое число, присутствующее в каждом аргументе индекса, должно быть больше или равно нулю. Целое число, присутствующее в каждом аргументе индекса, должно быть меньше или равно длине соответствующего списка. Другими словами, команда lset может изменить размер списка только путём добавления элемента (установки элемента после текущего конца). Если индекс находится вне допустимого диапазона, сообщается об ошибке.
Примеры
В каждом из этих примеров начальное значение x:set x [list [list a b c] [list d e f] [list g h i]]
→ {a b c} {d e f} {g h i} Указанное возвращаемое значение также становится новым значением x (кроме последнего случая, который является ошибкой, оставляющей значение x без изменений).
lset x {j k l}
→ j k l
lset x {} {j k l}
→ j k l
lset x 0 j
→ j {d e f} {g h i}
lset x 2 j
→ {a b c} {d e f} j
lset x end j
→ {a b c} {d e f} j
lset x end-1 j
→ {a b c} j {g h i}
lset x 2 1 j
→ {a b c} {d e f} {g j i}
lset x {2 1} j
→ {a b c} {d e f} {g j i}
lset x {2 3} j
→ list index out of range В следующих примерах начальное значение x:
set x [list [list [list a b] [list c d]] \
[list [list e f] [list g h]]]
→ {{a b} {c d}} {{e f} {g h}} Указанное возвращаемое значение также становится новым значением x.
lset x 1 1 0 j
→ {{a b} {c d}} {{e f} {j h}}
lset x {1 1 0} j
→ {{a b} {c d}} {{e f} {j h}} См. также
list, lappend, lindex, linsert, llength, lsearch, lsort, lrange, lreplace, string
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/lset.htm
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/lset.htm