How to pass multiple arrays in tcl proc?
我想为特定任务将多个数组传递给 tcl proc。
说我有数组名称列表
1 | set array_names [list abc pqr xyz] |
每个数组包含
1 2 3 4 5 6 7 8 9 10 11 12 | array set abc { red true blue false green true yellow false } array set pqr { red false blue true green false yellow true } |
xyz 数组相同
没有 proc 我可以执行以下任务
但需要为相同的
创建一个proc
1 2 3 4 | foreach RS $array_names { foreach {arr_ind ind_value} [array get $RS] { puts"set $RS\\_$arr_ind $ind_value" }} |
会输出
1 2 3 4 5 6 7 8 | set abc_yellow false set abc_blue false set abc_green true set abc_red true set pqr_yellow true set pqr_blue true set pqr_green false set pqr_red false |
您可以使用
1 2 3 4 5 6 7 8 | proc test {array_names} { foreach elem $array_names { upvar $elem __array foreach {arr_ind ind_value} [array get __array] { puts"set $elem\\_$arr_ind $ind_value" } } } |
调用过程为,
1 | test $array_names |
参考:upvar