从TCL中的过程返回数组

use*_*123 2 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
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我得到以下错误错误#args:应该是"数组设置数组名列表".我很确定我不想使用列表,如何设置从proc返回到另一个数组的数组???

App*_*234 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
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参见如何传递数组.