Coldfusion 函数调用中带有命名参数和隐式结构创建的奇怪错误
这是我最近在CF9中遇到的一个非常奇怪的错误。任何人都知道为什么会发生这种情况,如果我做错了什么,或者有可用的修补程序。请看下面的代码。我们获取一个字符串,添加一个a,添加一个B,然后尝试添加一个C。。。然而,我们得到的结果是“ababc”。预期结果是“abc”。只有在参数传递中执行命名参数和隐式结构,并在函数调用中执行Coldfusion 函数调用中带有命名参数和隐式结构创建的奇怪错误,coldfusion,coldfusion-9,Coldfusion,Coldfusion 9,这是我最近在CF9中遇到的一个非常奇怪的错误。任何人都知道为什么会发生这种情况,如果我做错了什么,或者有可用的修补程序。请看下面的代码。我们获取一个字符串,添加一个a,添加一个B,然后尝试添加一个C。。。然而,我们得到的结果是“ababc”。预期结果是“abc”。只有在参数传递中执行命名参数和隐式结构,并在函数调用中执行&=运算符时,才会发生错误。如果这3种情况中的任何一种都不存在,则错误不会发生。你知道为什么吗 <cffunction name="test"> <cf
&=
运算符时,才会发生错误。如果这3种情况中的任何一种都不存在,则错误不会发生。你知道为什么吗
<cffunction name="test">
<cfargument name="widget">
<cfset var locals = StructNew()>
<cfreturn arguments.widget.value>
</cffunction>
<cfset return = "">
<cfset return &= "a">
<cfset return &= "b">
<cfset return &= test(widget = { value = "c" })>
<cfoutput>#return#</cfoutput>
#返回#
嗯:您已经回答了自己的问题:它之所以发生,是因为它是一个bug。虫子会发生。很高兴你花时间向Adobe提出建议
对于工作环境,这两种变化效果良好:
<cfset return = "">
<cfset return &= "a">
<cfset return &= "b">
<cfset st = { value = "c" }><!--- refactor where the struct is created --->
<cfset return &= test(widget = st)>
<cfoutput>#return#</cfoutput>
#返回#
或:
#返回#
在Adobe着手修复它之前,你必须这样做:-(哇,这太奇怪了。向Adobe提交一份bug报告。实际上已经提交了。我们会看看它是否出现了什么。在我的笔记本XP SP2、ColdFusion Server Developer 9,0,0251028中返回“abc”,或者简单地说:
保持一行。
<cfset return = "">
<cfset return &= "a">
<cfset return &= "b">
<cfset temp = test(widget = { value = "c" })><!--- refactor where the function is called --->
<cfset return &= temp>
<cfoutput>#return#</cfoutput>