我听过其他人在数据完整性的上下文中提到Duplicate(),我想更好地了解它是如何工作的以及何时使用它。
我经常看到这个:
<cfreturn Duplicate(local.myVariable)>
当这也返回相同的结果时:
<cfreturn local.myVariable>
答案 0 :(得分:9)
虽然ColdFusion中的大多数变量都是passed by value,但结构不是 - passed by reference,如果你不小心,可能会导致无意中覆盖值。
使用Duplicate()
在内存中的另一个位置创建一个相同的变量副本,这样当它通过引用传递时(注意你仍然通过引用传递,没有办法强制传递值)来自调用者的数据所做的任何更改都不会影响返回的来源。
答案 1 :(得分:2)
Duplicate用于按值传递变量而不是引用。
如果使用
,ColdFusion中的结构通常会通过引用传递cfset struct1 = struct2
为了避免在更新struct2时更改struct1,我们使用
cfset struct1 = duplicate(struct2)