由于循环中if语句中的函数调用中的struct literal而引发错误

时间:2012-12-21 20:03:10

标签: coldfusion coldfusion-9

所以,我遇到了一个奇怪的错误,我在CF9中无法弄清楚。它似乎是由在函数调用内部的if语句内部的循环中使用结构文字引起的。删除这些变量中的任何一个,并且不会发生这种情况。

以下代码会引发错误:

错误:Variable KEY is undefined.

<cffunction name="test">
    <cfreturn true>
</cffunction>

<cfset local.data = { first = "asdf" }>

<cfloop list="first" index="key">
    <cfif test({ name = local.data[key] })>
        <cfoutput>test</cfoutput>
    </cfif>
</cfloop>

为什么呢?如果我们将结构设置为变量,它就可以工作。如果我们不循环它也可以正常工作。

<cffunction name="test">
    <cfreturn true>
</cffunction>

<cfset local.data = { first = "asdf" }>
<cfset key = "first">
<cfif test({ name = local.data[key] })>
    <cfoutput>test</cfoutput>
</cfif>

任何想法会发生什么?

1 个答案:

答案 0 :(得分:2)

一旦你提出了一个更好的问题,我会给出一个更好的答案;-)(根据我的评论告诉我们错误信息),但事实是CF的struct-literal(和array-)的实现一长串的实现错误已经破坏了字面意思。我认为他们终于在CF10中得到了解决。

所以,稍微倾斜地回答你的问题:“发生了什么事?” ColdFusion中的Shonky编码正在进行中。

有什么问题?遇到这些问题时,请使用传统的结构符号(点符号或关联数组符号)。

除此之外,现在做得更好,我很害怕。

同时查看bug base以查看您的特定案例是否已被记录,如果没有:记录新的错误。