【发布时间】:2010-12-30 06:59:45
【问题描述】:
我想将一个函数中获得的变量参数传递给另一个函数,但我不能这样做。函数获取偶数个变量参数,然后必须将其转换为数组。下面是示例。
Procedure 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)
【问题讨论】:
-
堆栈跟踪中的行号错误;这可能是因为我重新格式化,或者可能是因为在发布之前进行了蒸馏。无论哪种方式,这对问题都不是很重要。