Creating user-defined functions
195
The following sections describe the general rules for using the Arguments scope as an array and a
structure. For more information on using the Arguments scope in functions defined using
CFScript, see
“Using the Arguments scope in CFScript” on page 199
. For more information on
using the Arguments scope in functions defined using the
cffunction
tag, see
“Using the
Arguments scope in cffunction definitions” on page 202
.
The contents of the Arguments scope
The following rules apply to the Arguments scope and its contents:
•
The scope contains all the arguments passed into a function.
•
If you use
cffunction
to define the function, the scope always contains an entry “slot” for
each declared argument, even if you do not pass the argument to the function when you call it.
If you do not pass a declared (optional) argument, the scope entry for that argument is empty.
When you call a function that you defined using CFScript, you must pass the function a value
for each argument declared in the function definition. Therefore, the Arguments scope for a
CFScript call does not have empty slots.
The following example shows these rules. Assume that you have a function declared, as follows:
<cffunction name="TestFunction">
<cfargument name="Arg1" >
<cfargument name="Arg2">
</cffunction>
You can call this function with a single argument, as in the following line:
<cfset TestFunction(1)>
The resulting Arguments scope looks like the following:
In this example, the following functions return the value 2 because there are two defined
arguments:
ArrayLen(Arguments)
StructCount(Arguments)
However, the following tests return the value False, because the contents of the second element in
the Arguments scope is undefined.
Isdefined("Arguments.Arg2")
testArg2 = Arguments[2]>
Isdefined("testArg2")
Note:
The
IsDefined
function does not test the existence of array elements. Instead, put any code
that might try to access an undefined array element in a try block and use a catch block to handle
exceptions that arise if a elements do not exist.
As an array
As a structure
Entry
Value
Entry
Value
1
1
Arg1
1
2
undefined
Arg2
undefined
Summary of Contents for ColdFusion MX
Page 1: ...Developing ColdFusion MX Applications...
Page 22: ...22 Contents...
Page 38: ......
Page 52: ...52 Chapter 2 Elements of CFML...
Page 162: ......
Page 218: ...218 Chapter 10 Writing and Calling User Defined Functions...
Page 250: ...250 Chapter 11 Building and Using ColdFusion Components...
Page 264: ...264 Chapter 12 Building Custom CFXAPI Tags...
Page 266: ......
Page 314: ...314 Chapter 14 Handling Errors...
Page 344: ...344 Chapter 15 Using Persistent Data and Locking...
Page 349: ...About user security 349...
Page 357: ...Security scenarios 357...
Page 370: ...370 Chapter 16 Securing Applications...
Page 388: ...388 Chapter 17 Developing Globalized Applications...
Page 408: ...408 Chapter 18 Debugging and Troubleshooting Applications...
Page 410: ......
Page 426: ...426 Chapter 19 Introduction to Databases and SQL...
Page 476: ...476 Chapter 22 Using Query of Queries...
Page 534: ...534 Chapter 24 Building a Search Interface...
Page 556: ...556 Chapter 25 Using Verity Search Expressions...
Page 558: ......
Page 582: ...582 Chapter 26 Retrieving and Formatting Data...
Page 668: ......
Page 734: ...734 Chapter 32 Using Web Services...
Page 760: ...760 Chapter 33 Integrating J2EE and Java Elements in CFML Applications...
Page 786: ...786 Chapter 34 Integrating COM and CORBA Objects in CFML Applications...
Page 788: ......