从TCL中的过程返回数组

时间:2012-03-18 01:04:32

标签: tcl

我想从一个过程传递数组和返回数组,以下是我试过的示例代码。但是得到了一些错误..

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返回的数组到另一个数组?

1 个答案:

答案 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