Да, CFML поддерживает динамические аргументы до тех пор, пока он поддерживает пользовательские функции.
Все аргументы, будь то явно определенные или переданные без определения, существуют в области аргументов.
Область действия Arguments может рассматриваться как массив и структура (ключ / значение).
Вот наиболее близкий к вашему примеру эквивалент с использованием синтаксиса скрипта:
function func()
{
for (a in arguments)
WriteOutput(arguments[a] & "is a quality argument");
}
Обратите внимание, что 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>
А этот позволяет напрямую получить доступ к значению (т. Е. a
- это значение здесь):
<cffunction name="func">
<cfloop index="a" array=#Arguments#>
<cfoutput>#a# is a quality argument</cfoutput>
</cfloop>
</cffunction>
В Railo * CFML этот последний пример может быть выражен в скрипте как:
function func()
{
loop index="a" array=Arguments
{
WriteOutput(a & 'is a quality argument');
}
}
* Railo - это одна из двух альтернатив Adobe ColdFusion с открытым исходным кодом, другая Open BlueDragon .