所以,我遇到了一个奇怪的错误,我在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>
任何想法会发生什么?
答案 0 :(得分:2)
一旦你提出了一个更好的问题,我会给出一个更好的答案;-)(根据我的评论告诉我们错误信息),但事实是CF的struct-literal(和array-)的实现一长串的实现错误已经破坏了字面意思。我认为他们终于在CF10中得到了解决。
所以,稍微倾斜地回答你的问题:“发生了什么事?” ColdFusion中的Shonky编码正在进行中。
有什么问题?遇到这些问题时,请使用传统的结构符号(点符号或关联数组符号)。
除此之外,现在做得更好,我很害怕。
同时查看bug base以查看您的特定案例是否已被记录,如果没有:记录新的错误。