Joh*_*ohn 6 python coldfusion coldfusion-9
在python中有一个*args约定,我想知道CF9是否支持类似的东西.
这是python示例
>>> def func(*args):
for a in args:
print a, "is a quality argument"
>>> func(1, 2, 3)
1 is a quality argument
2 is a quality argument
3 is a quality argument
>>>
Run Code Online (Sandbox Code Playgroud)
Pet*_*ton 10
是的,CFML支持动态参数,只要它支持用户定义的函数.
所有参数,无论是显式定义的,还是在未定义的情况下传入,都存在于Arguments范围中.
Arguments范围可以视为数组和结构(键/值).
使用脚本语法,这是与您的示例最接近的等效项:
function func()
{
for (a in arguments)
WriteOutput(arguments[a] & "is a quality argument");
}
Run Code Online (Sandbox Code Playgroud)
请注意,a在此示例中是键名,而不是值,因此使用了原因arguments[a].
要被视为代码,上面的脚本必须在<cfscript>.. </cfscript>标签内,或者在文件内的component {.. }块内.cfc.
这里有几个标签版本,第一个等同于for/in循环:
<cffunction name="func">
<cfloop item="a" collection=#Arguments#>
<cfoutput>#Arguments[a]# is a quality argument</cfoutput>
</cfloop>
</cffunction>
Run Code Online (Sandbox Code Playgroud)
这个允许您直接访问该值(即a此处的值):
<cffunction name="func">
<cfloop index="a" array=#Arguments#>
<cfoutput>#a# is a quality argument</cfoutput>
</cfloop>
</cffunction>
Run Code Online (Sandbox Code Playgroud)
在Railo*CFML中,最后一个示例可以在脚本中表示为:
function func()
{
loop index="a" array=Arguments
{
WriteOutput(a & 'is a quality argument');
}
}
Run Code Online (Sandbox Code Playgroud)
*Railo是Adobe ColdFusion的两个开源替代品之一,另一个是Open BlueDragon.