我想从一个过程传递数组和返回数组,以下是我试过的示例代码。但是得到了一些错误..
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:应该是“array set arrayName list”。我很确定我不想使用list,如何设置从proc返回的数组到另一个数组?
答案 0 :(得分:10)
您缺少的步骤是您返回[array get arr]
而非arr
。
以下代码段可在此处使用
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 [array get arr]
}
array set some [deleten a]
parray some
有关详细信息,请参阅How to pass arrays。