可变内存空间共享?

时间:2013-07-08 20:39:48

标签: coldfusion coldfusion-9

在循环中,以下内容将par.fval添加到this.filters以及par.T开头的所有内容:

<cfset par.T = this.filters />
<cfset ArrayAppend(par.T[this.name],par.fval)/>

如果最初定义了所有变量,并且par.fval随每次迭代而变化:

<cfloop ...>
    <cfdump var="#this.filters#"/>
    <cfset par.T = this.filters />
    <cfset ArrayAppend(par.T[this.name],par.fval)/>
</cfloop>

将为每次迭代转储this.filters,并附加最后一个值par.fval

我试图找出原因,因为我假设ColdFusion会将par.T覆盖为一个全新的变量。

将其缩小以删除逻辑:

filtersA: 
<cfdump var="#this.filters#">
<cfset par.T = #this.filters# />
<cfset ArrayAppend(par.T[this.name],par.fval)/>

filtersB: 
<cfdump var="#this.filters#">

将显示par.fval已在该附加语句中附加到this.filters。因此无论出于何种原因,par.T似乎不会成为自己的变量,而是对this的内存空间的引用。

0 个答案:

没有答案