如果我有一个需要将数组返回给它的调用者的过程,那么最好的方法是什么?
由于无法 $ 数组变量,我下面的代码在 Tcl 中不起作用:
proc mine {} {
array set foo { red 1 blue 2 green 3 }
$foo
}
tcl> set foo [mine]
Error: can't read "foo": variable is array
或者,这也不起作用:
proc mine {} {
array set foo { red 1 blue 2 green 3 }
array get foo
}
tcl> set foo [mine]
tcl> puts $foo(blue)
Error: can't read "foo(blue)": variable isn't array
这给我留下了可能效率低下的问题:
proc mine {} {
array set foo { red 1 blue 2 green 3 }
array get foo
}
tcl> array set foo [mine]
2
或者晦涩的:
proc mine {varName} {
upvar $varName localVar
array set localVar { red 1 blue 2 green 3 }
}
tcl>unset foo
tcl>mine foo
tcl>puts $foo(blue)
2
有没有更好的方法来做到这一点,或者如果没有,哪种方法最有效?