Sí, CFML ha apoyado argumentos dinámicos durante el tiempo que se ha apoyado funciones definidas por el usuario.
Todos los argumentos, ya sean explícitamente definidos o pasados sin definición, existen en el alcance de Argumentos.
El alcance de Arguments se puede tratar como una matriz y una estructura (clave/valor).
Aquí es el equivalente más cercano a su ejemplo, usando la sintaxis de script:
function func()
{
for (a in arguments)
WriteOutput(arguments[a] & "is a quality argument");
}
Tenga en cuenta que a
en este ejemplo es el nombre de la clave, no el valor, tanto por qué se utiliza arguments[a]
.
a ser tratado como código, el script de arriba debe tener lugar dentro de <cfscript>
.. </cfscript>
etiquetas, o, alternativamente, dentro de un bloque .. }
component {
dentro de un archivo .cfc
.
Aquí hay un par de versiones de etiquetas, la primera equivalente a la de/en bucle:
<cffunction name="func">
<cfloop item="a" collection=#Arguments#>
<cfoutput>#Arguments[a]# is a quality argument</cfoutput>
</cfloop>
</cffunction>
Y éste le permite acceder directamente el valor (es decir,a
es el valor aquí):
<cffunction name="func">
<cfloop index="a" array=#Arguments#>
<cfoutput>#a# is a quality argument</cfoutput>
</cfloop>
</cffunction>
En Railo * CFML, este último ejemplo se puede expresar en la escritura como:
function func()
{
loop index="a" array=Arguments
{
WriteOutput(a & 'is a quality argument');
}
}
* Railo es una de dos alternativas de código abierto para Adobe ColdFusion, el otro es Open BlueDragon.
Estoy teniendo problemas haciendo que funcione su último ejemplo ... el error que estoy obteniendo es 'function palabra clave falta en la declaración FUNCTION' ... ¿Alguna sugerencia? – John
Ese primer ejemplo debería estar dentro del bloque –
' loop index = "a" array = Argumentos '? Nunca he visto esto, ¿es esto para Railo o algo? – Henry