有没有可靠的方法通过引用将参数传递给proc
(不使用upvar
)?
答案 0 :(得分:4)
否。 如果您希望能够修改程序中的值并在外部显示该修改,则不会。
Tcl的程序的参数严格按值传递(实现实际上通过 immutable 引用,这对于复杂的结构来说更便宜,并且使用写时复制封面下的修改技术;看起来像是按值传递),所以你不能影响外面的世界,除非把它带进upvar
之类的东西。有时,您传入的内容可能是可修改条目的句柄(例如,类实例,DOM节点),然后您可以观察到与外部的差异,但实际上并没有修改传递的内容本身(句柄),而是它引用的东西。