ColdFusion对象是按引用传递还是按值传递?

26
冷凝物对象(即通过cfobject调用的CFC)通常是按引用还是按值(在内存中复制)传递的?是否可以强制ColdFusion以任一方式传递对象?
4个回答

30

ColdFusion对象是按引用传递的。实际上没有办法按值传递一个对象,但是你可以使用duplicate()函数来创建一个副本。


我的理解是,就像Java一样,ColdFusion也通过值传递引用。这与按引用传递略有不同,因为如果一个函数将一个对象作为参数“in”传递,然后在函数内部将“in”更改为完全不同的对象,则不会影响传递给函数的变量。而在C中,您真正可以按引用传递传递的变量将受到影响。 - Richard Tingle
与Java一样,ColdFusion没有指针,因此“按引用传递”和“按值传递”的定义得到了简化。 - Patrick McElhaney
虽然这是正确的(因此没有真正的传递引用,谢天谢地),但传递引用和通过值传递引用之间的区别仍然很重要。这个关于Java的问题非常好地解释了这个问题; https://dev59.com/EXVD5IYBdhLWcg3wQJOT - Richard Tingle

15

10

类似于结构体和CFC这样的复合对象是通过引用传递的,但如果将数组传递给一个UDF,则它是按值传递的。这使得编写像内置数组函数一样改变数组的用户定义函数成为不可能。如果您确实需要按引用传递数组,则可以将其包装在结构中,然后它将按引用传递。


4

值得一提的是,在Railo CFML引擎中,数组也被视为按引用传递的,很多开发人员认为这样做更为合理。预计Railo 3.1版本还将提供一个管理设置选项,允许您选择默认行为,以便与Adobe CF进行可选的兼容性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接