У меня есть такой скрипт:
proc subProc1 { } {
puts $var1
}
proc subProc2 { } {
puts $var2
}
proc mainProc { args } {
# Define many variables
subProc1
subProc2
#etc.
}
Я хотел бы, чтобы subProc1 и subProc2 имели переменные, определенные в mainProc. Я могу передать их как аргументы, но это много аргументов, я бы хотел этого избежать.
Я попытался использовать команду upvar, добавив эту строку в subProcs:
subProc1 { } {
upvar $var1 var1 $var2 var2 ;#etc
puts $var1
# etc.
}
Но у меня есть сообщение об ошибке «нет такой переменной», и нехорошо иметь такую огромную строку
Я только что прочитал о пространстве имен, но я действительно не понимаю, как его использовать (плюс я не уверен, что понимаю концепцию, так что она действительно адаптирована к моему варианту использования?)