Дорогой ЛОР,
Читая tutorial по tcl, я наткнулся на команду upvar, которая позволяет доставать переменные из других областей видимости. Например, так:
proc upvar_test {} {
upvar 1 x _x
if { [info exists _x] } {
set _x "???"
} {
puts "variable x is not set"
}
}
set x 1 ;# x is set to 1
upvar_test ;# x is now set to "???"
Страшновато, правда? Понятно, что upvar можно использовать во имя добра (чтобы эмулировать call by reference). Хорошо.
Вопрос. Можно ли как-то ограничить возможное злоупотребление командой upvar?