TCL: получить одну переменную, которая будет интерпретироваться как несколько аргументов - PullRequest
1 голос
/ 13 июня 2019

Как мне получить единственную строковую переменную с пробелами в TCL, которая будет интерпретироваться как несколько аргументов? Я не могу изменить определение процедуры.

Вот пример того, что я имею в виду:

set my_options ""
if { "$some_condition" == 1 } {
    append my_options " -optionA"
}
if { "$some_other_condition" == 1 } {
    append my_options " -optionB"
}
set my_options [string trim $my_options]
not_my_proc ${my_options} ;# my_options gets interpreted as a single arg here and causes a problem:
# Flag '-optionA -optionB' is not supported by this command.

1 Ответ

1 голос
/ 13 июня 2019

Здесь вы используете расширение аргумента синтаксис:

not_my_proc {*}$my_options
# ..........^^^

Хотя я бы рекомендовал использовать список вместо строки:

  • если по какой-то причине строка my_options не является правильно сформированным списком, вы увидите ошибку, выданную
  • , если какой-либо из параметров занимает пробел, список представляет собой правильную структуру данных:
set my_options [list]
lappend my_options {-option1}
lappend my_options {-option2 "with a parameter"}
not_my_proc {*}$my_options
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...