#list #function #scripting #command #tcl
#Список #функция #сценарии #команда #tcl
Вопрос:
Здесь у нас есть 3 команды: lindex, lappend и length .
Если я хочу их использовать, мне нужно использовать знак $ с lindex и llength, но мне не нужно использовать его с lappend.
Посмотрите на следующие коды:
set list_name {1 2 3 4 5}
puts [lindex $list_name 1]
lappend list1 6
puts [llength $list_name]
Как я могу понять, после какой команды мне нужно использовать знак $ с именем переменной и когда мне не нужно его использовать?
Комментарии:
1. Боюсь, лучший ответ: прочитайте документы => tcl-lang.org/man/tcl8.6/TclCmd/contents.htm — обратите внимание на примеры
Ответ №1:
Общее правило таково: если Tcl считывает значение переменной, используйте $
. При изменении существующей переменной используется no $
, используется имя переменной.
- lappend напрямую изменяет свой аргумент, поэтому он принимает имя переменной.
- lindex считывает значение списка по некоторому индексу, поэтому используется значение списка.
- llength считывает значение списка, поэтому используется значение списка.
Эти три на самом деле довольно просты. Я нахожу lreplace
наиболее трудным для запоминания. lreplace
возвращает новый список и не изменяет список, указанный в качестве аргумента. Он принимает значение списка в качестве аргумента.
Напрямую изменяет список:
- lappend
- lset
Использует значение списка:
- lindex
- длина
- lreplace
- lmap
- lrange
- lreverse
- lsearch
- lsort
Комментарии:
1.
foreach
это еще одна команда, которая использует значения списка.
Ответ №2:
Одним из соглашений в документации tcl является использование varName или TypeVariable для объектов, которые принимают имя переменной и изменяют содержимое переменной, и typeValue или type (например, list, string , dictionaryValue) для объектов, которые принимают значение этого типа. Последний случай — это когда вы используете $foo
для передачи содержимого переменной. Первый случай — это когда вы используете foo
(если, конечно, имя переменной, которую вы хотите использовать, само находится в переменной).
Вы также должны быть знакомы с Додекалогом, если вы работаете с tcl, чтобы знать, что $
означает и как его можно использовать в целом (правило 8).