Using the Arguments scope as an array
The following rules apply to referencing Arguments scope as an array:
•
If you call the function using unnamed arguments, the array index is the position of the
argument in the function call.
•
If you use names to pass the arguments, the array indexes correspond to the order in which the
arguments are declared in the function definition.
•
If you use names to pass arguments, and do not pass all the arguments defined in the function,
the Arguments array has an empty entry at the index corresponding to the argument that was
not passed. This rule applies only to functions created using the
•
If you use a name to pass an optional argument that is not declared in the function definition,
the array index of the argument is the sum of the following:
The number of arguments defined with names in the function.
a
The position of the optional argument among the arguments passed in that do not have
b
names defined in the function.
However, using argument names in this manner is not good programming practice because
you cannot ensure that you always use the same optional argument names when calling the
function.
To demonstrate these rules, define a simple function that displays the contents of its Arguments
array and call the function with various argument combinations, as shown in the following
example:
<cffunction name="TestFunction" >
<cfargument name="Arg1">
<cfargument name="Arg2">
<cfloop index="i" from="1" to="#ArrayLen(Arguments)#">
<cfoutput>Argument #i#: #Arguments[i]#<br></cfoutput>
</cfloop>
</cffunction>
<strong>One Unnamed argument</strong><br>
<cfset TestFunction(1)>
<strong>Two Unnamed arguments</strong><br>
<cfset TestFunction(1, 2)>
<strong>Three Unnamed arguments</strong><br>
<cfset TestFunction(1, 2, 3)>
<strong>Arg1:</strong><br>
<cfset TestFunction(Arg1=8)>
<strong>Arg2:</strong><br>
<cfset TestFunction(Arg2=9)>
<strong>Arg1=8, Arg2=9:</strong><br>
<cfset TestFunction(Arg1=8, Arg2=9)>
<strong>Arg2=6, Arg1=7</strong><br>
<cfset TestFunction(Arg2=6, Arg1=7)>
<strong>Arg1=8, Arg2=9, Arg3=10:</strong><br>
<cfset TestFunction(Arg1=8, Arg2=9, Arg3=10)>
<strong>Arg2=6, Arg3=99, Arg1=7</strong><br>
<cfset TestFunction(Arg2=6, Arg3=99, Arg1=7)>
Note: Although you can use the Arguments scope as an array, the
always returns false and the
196
Chapter 10: Writing and Calling User-Defined Functions
tag displays the scope as a structure.
cfdump
tag.
cffunction
function
IsArray(Arguments)
Need help?
Do you have a question about the COLDFUSION MX 61-DEVELOPING COLDFUSION MX and is the answer not in the manual?
Questions and answers