Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coldfusion 函数调用中带有命名参数和隐式结构创建的奇怪错误_Coldfusion_Coldfusion 9 - Fatal编程技术网

Coldfusion 函数调用中带有命名参数和隐式结构创建的奇怪错误

Coldfusion 函数调用中带有命名参数和隐式结构创建的奇怪错误,coldfusion,coldfusion-9,Coldfusion,Coldfusion 9,这是我最近在CF9中遇到的一个非常奇怪的错误。任何人都知道为什么会发生这种情况,如果我做错了什么,或者有可用的修补程序。请看下面的代码。我们获取一个字符串,添加一个a,添加一个B,然后尝试添加一个C。。。然而,我们得到的结果是“ababc”。预期结果是“abc”。只有在参数传递中执行命名参数和隐式结构,并在函数调用中执行&=运算符时,才会发生错误。如果这3种情况中的任何一种都不存在,则错误不会发生。你知道为什么吗 <cffunction name="test"> <cf

这是我最近在CF9中遇到的一个非常奇怪的错误。任何人都知道为什么会发生这种情况,如果我做错了什么,或者有可用的修补程序。请看下面的代码。我们获取一个字符串,添加一个a,添加一个B,然后尝试添加一个C。。。然而,我们得到的结果是“ababc”。预期结果是“abc”。只有在参数传递中执行命名参数和隐式结构,并在函数调用中执行
&=
运算符时,才会发生错误。如果这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>