Struct 结构追加vs重复

Struct 结构追加vs重复,struct,coldfusion,coldfusion-2016,Struct,Coldfusion,Coldfusion 2016,我对这类事情很熟悉 if ( isDefined( 'URL' ) ) structAppend( request.context, URL ); if ( isDefined( 'Form' ) ) structAppend( request.context, Form ); 这就是FW/1构建rc的方式。我最近收到了一些实现这一点的代码 _inputs = duplicate(url); structAppend(_inputs, form); duplicate()在这里做什么?这

我对这类事情很熟悉

if ( isDefined( 'URL'  ) ) structAppend( request.context, URL );
if ( isDefined( 'Form'  ) ) structAppend( request.context, Form );
这就是FW/1构建
rc的方式。
我最近收到了一些实现这一点的代码

_inputs = duplicate(url);
structAppend(_inputs, form);

duplicate()
在这里做什么?这与
structAppend()
有何不同?

我想知道原始开发人员在使用
StructCopy()
方法时是否遇到了问题,并将这些问题带入了他们的
structAppend()
方法的代码中?我知道
StructCopy()
方法将通过引用复制嵌套结构,这可能会对您产生不利影响。这就是我使用
Duplicate()
方法(制作结构的全新副本)的一个例子

但是我不认为
StructAppend()
是这样工作的。也许他们写这段代码时过于谨慎。显然,这只是一个猜测

复制一个结构。按值复制结构中的顶级键、值和数组;通过引用复制嵌套结构


.

StructAppend()
的工作方式与
StructCopy()
的工作方式相同:它复制顶级键值对,并向嵌套键添加引用。当与嵌套结构一起使用时,它非常复杂。不推荐使用。像
url
form
这样的系统作用域受分配保护,这意味着您不能像
url={}
那样覆盖它们(根本不会发生任何事情)。这可能是在使用范围值之前先复制范围值的原因,如第二个示例所示。创建“深度”副本(独立)副本也很好,这样更改不会影响原始范围。