Bri*_*ton 3 coldfusion pass-by-reference
默认情况下,ColdFusion通过值将简单类型(如数字,字符串和GUID)传递给函数.我想通过引用传递一个简单的类型.
我目前正在结构中包装一个简单的值(它们通过引用传递).这解决了我的问题,但它非常难看:
<!--- TheFunctionName---->
<cffunction name="TheFunctionName">
<cfargument name="OutVariable" type="struct">
<cfset OutVariable.ID = 5>
</cffunction>
<cfset OutVariable=StructNew()>
<cfset TheFunctionName(OutVariable)>
<!--- I want this to output 5--->
<cfoutput>#OutVariable.ID#</cfoutput>
Run Code Online (Sandbox Code Playgroud)
我宁愿这样:
<!--- TheFunctionName---->
<cffunction name="TheFunctionName">
<cfargument name="OutVariable" passbyref="true">
<cfset OutVariable = 5>
</cffunction>
<cfset TheFunctionName(OutVariable)>
<!--- I want this to output 5--->
<cfoutput>#OutVariable#</cfoutput>
Run Code Online (Sandbox Code Playgroud)
AFAIK,在ColdFusion中无法通过引用传递简单值.我能想到的唯一解决方法就是你已经使用的那个.
相反,我建议尝试重新构建您的程序以使用该语言.如果只有一个简单值来"修改",你可以让你的函数返回新值,并调用它:
<cfset SomeVar = TheFunctionName(SomeVar)>
Run Code Online (Sandbox Code Playgroud)
如果您正在修改多个值,请退后一步,考虑是否可以将这些多个值捆绑到CFC中,并将mutator函数转换为CFC的方法.无论如何,这可能是更清晰和更可维护的解决方案.