#function #variables #arguments #tcl #procedure
#функция #переменные #аргументы #tcl #процедура
Вопрос:
У меня есть следующая процедура:
proc test {a {b 10} {c 30}} {
puts "$a $b $c"
}
Я хотел бы вызвать процедуру тестирования, передав значение аргументам a и c и сохранив значение по умолчанию для аргумента b. Другими словами, я хочу передать значение аргументов по имени.
Возможно ли это сделать в TCL?
Ответ №1:
Нет.
Обычный способ сделать это:
proc test { args } {
# set up the defaults
set a(-a) {}
set a(-b) 10
set a(-c) 30
set len [llength $args]
# some basic argument checking
if { $len > 6 || $len < 2 || $len % 2 != 0 } {
error "Invalid arguments"
}
array set a $args
...
}
set result [test -a 3 -c 40]
Комментарии:
1. Это правильно.
tcl::prefix
Команда может быть использована для выполнения более сложной версии этого. И люди годами спорили о том, как выполнить вызов привязки по имени, но так и не был получен окончательный ответ; сложно правильно сбалансировать все различные требования.