我可以在ColdFusion中通过引用传递一个简单的值吗?

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)

Jas*_*ton 8

AFAIK,在ColdFusion中无法通过引用传递简单值.我能想到的唯一解决方法就是你已经使用的那个.

相反,我建议尝试重新构建您的程序以使用该语言.如果只有一个简单值来"修改",你可以让你的函数返回新值,并调用它:

<cfset SomeVar = TheFunctionName(SomeVar)>
Run Code Online (Sandbox Code Playgroud)

如果您正在修改多个值,请退后一步,考虑是否可以将这些多个值捆绑到CFC中,并将mutator函数转换为CFC的方法.无论如何,这可能是更清晰和更可维护的解决方案.