【发布时间】:2013-08-15 08:18:20
【问题描述】:
我想从过程中传递数组并返回数组,以下是我尝试过的示例代码。但是遇到一些错误..
set a(0) "11"
set a(1) "10"
set a(2) "20"
set a(3) "30"
set a(4) "40"
proc deleten somet {
upvar $somet myarr
for { set i 1} { $i < [array size myarr]} { incr i} {
set arr($i) $myarr($i)
}
return arr
}
array set some[array get [deleten a]]
parray some
当我运行此代码时,我收到以下错误错误 # args: should be "array set arrayName list"。我很确定我不想使用列表,如何将 proc 返回的数组设置为另一个数组???
【问题讨论】:
-
在该代码中做这件事似乎很奇怪。使用
array set some [array get a];unset some(0)不是更简单吗? -
一般来说,我建议为您的变量和过程使用描述性名称。
deleten或somet之类的名称不能传达您的意图/目的。 -
退后一步,您似乎可以根据需要使用列表而不是数组。我这样说是因为索引是连续的整数。请记住,在 Tcl 中,list 数据结构等价于 C 或 Java 等其他语言中的 array。
标签: tcl