配列を呼び出し元に返す必要があるprocがある場合、これを行うための最良の方法は何ですか?
次のコードは、配列変数を$できないため、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
これを行うためのより良い方法はありますか、そうでない場合は、どちらが最も効率的ですか?