CF9 cfscript,将动态数组作为参数传递

3
我开始今年有一个很大的问题。 当我执行时
myName = "Henry";
myCustomFunction( [ myName, "Thierry" ] );

它会抛出一个错误,例如myName未定义。为什么会这样?

我可以通过以下方式解决此问题

myName = "Henry";
aMyArrayArgument = [ myName, "Thierry" ];
myCustomFunction( aMyArrayArgument );

但是,我想知道为什么Coldfusion不允许在参数中传递[ myName, "Thierry" ]

如果有帮助的话,我使用Framework One (FW/1)。

谢谢!


7
我怀疑这与您的函数定义有关。 myCustomFunction 的签名是什么?另外,确切的错误信息是什么? - Leigh
1
我会重复其他人所说的话。你引用的代码没问题。是其他代码给你带来了错误。我可以建议你打开强大的异常处理功能查看错误,它将提供给你精确的错误信息和发生错误的行数。然后你可以向我们提供这些信息,而不是像“它抛出一个类似于myName未定义的错误”这样模糊的描述。不要告诉我们错误是什么样的,给我们准确的错误信息和导致错误的准确代码。 - Adam Cameron
这听起来像是 bug #3482734 的变体 - 我猜实际的代码在一个块内并使用了命名参数。 - Peter Boughton
2个回答

1
如果我这样做:
 <cffunction name="xx" returntype="void">
     <cfargument name="x" type="array">
     <cfdump var="#arguments.x#">
 </cffunction>

 <cfset myname = "dan">
 <cfset xx([myname, 'bracuk']) >

代码运行没有错误,我看到了转储。你的代码肯定还有其他问题。

1
如果您的实际代码看起来更像这样:
if (something)
{
    myName = "Henry";
    myCustomFunction( argname=[ myName, "Thierry" ] );
}

如果出现问题,那是因为CF中的字面结构和数组表示法写得非常糟糕且存在缺陷。

如果您可以确认它的破坏情况,请向Adobe提出问题(已经有几个与此相关的问题,您可以查看是否有重复问题)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接