LINUX.ORG.RU

Получить имя переменной и ее значение

 


0

1

Если делаю так

set var1 10

foreach var {var1} {
  upvar 0 $var value
  puts "$var: $value"
}

Получаю var1: 10. Всё гуд, хоть как-то работает. А как это дело обернуть в функцию? Что бы вызвать ее так:

someDebug $var1 и получить на выводе var1: 10

★★

Последнее исправление: macumazan (всего исправлений: 1)

В таком виде никак. Как только ты передал в процедуру $var1, ее имя внутри процедуры уже никак не получить. Процедура получает только ее значение. А если так: someDebug var1, то вполне получится, если upvar 1 использовать.

TeopeTuK ★★★★★
()

про upvar выше уже сказали,

в вашем коде можно сразу получить значение по имени переменной через set

foreach var {var1} {
   puts "$var: [ set $var ]"
}

someDebug можно сделать примерно так например:

proc someDebug args {
  foreach name $args {
     set value [ uplevel [ list set $name ] ]
     puts "$name: $value"
  }
}

MKuznetsov ★★★★★
()