Я хочу передать переменные аргументы, полученные в одной функции, в другую функцию, но я не могу этого сделать. Функция получает четное количество переменных аргументов, после чего ее нужно преобразовать в массив. Ниже приведен пример.
Процедура abc1
получает два аргумента (k k
) и не формирует процедуру abc1
, они должны быть переданы в proc abc
, где должно быть выполнено преобразование списка в массив. Преобразование списка в массив работает в proc1, т.е. abc1
, но не во втором proc, т.е. abc
Полученная ошибка приведена ниже
proc abc {args} {
puts "$args"
array set arg $args
}
proc abc1 {args} {
puts "$args"
array set arg $args
set l2 [array get arg]
abc $l2
}
abc1 k k
abc k k
Выход:
k k
{k k}
list must have an even number of elements
while executing
"array set arg $l1"
(procedure "abc" line 8)
invoked from within
"abc $l2"
(procedure "abc1" line 5)
invoked from within
"abc1 k k"
(file "vfunction.tcl" line 18)