Команда tcl Uplevel set завершается неудачно, когда значение содержит несколько слов
Все, что я пытаюсь сделать: Proc A вызывает Proc B, Используя команду верхнего уровня из B, я пытаюсь установить переменную в области действия proc A. Ошибка возникает, когда значение имеет пробелы.
proc B { } {
set string1 "Test"
set string2 "Test with space"
uplevel 1 set key1 $string1
uplevel 1 set key2 $string2
return 0
}
proc A { } {
set res [B]
puts "key1 is $key1"
puts "key2 is $key2"
}
Если я закомментирую key2, он будет работать нормально. При добавлении ключа 2 происходит сбой со следующей ошибкой.
wrong # args: should be "set varName ?newValue?"
while executing
"set key2 Test with space"
Любые предложения о том, как преодолеть эту ошибку. Ценю твою помощь.
1 ответ
uplevel 1 set key2 $string2
становится set key1 test with space
Вот почему вы получаете свою ошибку.
Лучше всего создать команду, которую вы хотите запустить, используя [list]
:
uplevel 1 [list set key2 $string2]
Это будет гарантировать правильное формирование set
заявление.