Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tcl 如何通过引用将参数传递给proc?_Tcl_Pass By Reference - Fatal编程技术网

Tcl 如何通过引用将参数传递给proc?

Tcl 如何通过引用将参数传递给proc?,tcl,pass-by-reference,Tcl,Pass By Reference,是否有任何可靠的方法通过引用将参数传递给proc(不使用upvar)?否。如果您希望能够在过程内部修改值,并使修改在外部可见,则不需要 Tcl的过程严格按照值传递参数(实现实际上是通过不可变引用传递的,这对于复杂结构来说更便宜,并且在幕后使用了一种写时拷贝修改技术;它看起来像是通过值传递的)因此,你不能影响外部世界,除非用类似于upvar的东西把它带进来。有时,您传入的内容可能是可修改条目(例如,类实例、DOM节点)的句柄,然后您可以观察到与外部的差异,但这并不是实际修改传入的内容(句柄)而是它

是否有任何可靠的方法通过引用将参数传递给
proc
(不使用
upvar
)?

否。如果您希望能够在过程内部修改值,并使修改在外部可见,则不需要

Tcl的过程严格按照值传递参数(实现实际上是通过不可变引用传递的,这对于复杂结构来说更便宜,并且在幕后使用了一种写时拷贝修改技术;它看起来像是通过值传递的)因此,你不能影响外部世界,除非用类似于
upvar
的东西把它带进来。有时,您传入的内容可能是可修改条目(例如,类实例、DOM节点)的句柄,然后您可以观察到与外部的差异,但这并不是实际修改传入的内容(句柄)而是它所引用的内容。

否。如果您希望能够在过程内部修改值,并使该修改在外部可见,则不能

Tcl的过程严格按照值传递参数(实现实际上是通过不可变引用传递的,这对于复杂结构来说更便宜,并且在幕后使用了一种写时拷贝修改技术;它看起来像是通过值传递的)因此,你不能影响外部世界,除非用类似于
upvar
的东西把它带进来。有时,您传入的内容可能是可修改条目(例如,类实例、DOM节点)的句柄,然后您可以观察到与外部的差异,但这实际上并不是修改传入的内容(句柄),而是修改它引用的内容