如果我有
<cfset arr_arguments = ["a","b","c"]>
<cfunction name="someFunction">
<cfargument name="someArgumentOne">
<cfargument name="someArgumentTwo">
<cfargument name="someArgumentThree">
</cffunction>
有什么方法可以调用
someFunction
带参数 arr_arguments
,类似于 someFunction("a","b","c")
?我当然知道我可以使用 argumentCollection
将(键控)结构传递给函数,但我特别询问传入(无键)数组。在 JS 中,这可以通过 someFunction.apply(this,arr_arguments)
轻松完成。 ,但在coldfusion我找不到任何方法来做到这一点。
最佳答案
未命名的参数作为结构体传递给函数,其中数字键与函数参数中定义的参数位置相匹配。因此,您可以将数组转换为带有数字键的结构,而不是传递命名参数,然后使用参数集合传递结构:
<cfset arr_arguments = {"1"="a","2"="b","3"="c"}>
<cfset someFunction(argumentCollection=arr_arguments)>
您可以轻松地将数组转换为带有数字键的结构,如下所示:
<cfset args = {}>
<cfloop from="1" to="#arrayLen(arr_arguments)#" index="i">
<cfset args[i] = arr_arguments[i]>
</cfloop>
关于coldfusion - 使用动态参数数组调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16146781/