Using The Evaluate Function; Passing Complex Data - MACROMEDIA COLDFUSION MX 61-DEVELOPING COLDFUSION MX Develop Manual

Developing coldfusion mx applications
Table of Contents

Advertisement

WriteOutput("MyFunc is not defined");
</cfscript>
You do not surround the argument to
function to determine if function arguments are themselves functions.

Using the Evaluate function

If your user-defined function uses the
must make sure that all variable names you use as arguments include the scope identifier. Doing
so avoids conflicts with function-only variables.
The following example returns the result of evaluating its argument. It produces the expected
results, the value of the argument, if you pass the argument using its fully scoped name,
Variables.myname. However, the function returns the value of the function local variable if you
pass the argument as myname, without the Variables scope identifier.
<cfscript>
myname = "globalName";
function readname( name ) {
var myname = "localName";
return (Evaluate( name ));
}
</cfscript>
<cfoutput>
<!--- This one collides with local variable name --->
The result of calling readname with myname is:
#readname("myname")# <br>
<!--- This one finds the name passed in
The result of calling readname with Variables.myname is:
#readname("Variables.myname")#
</cfoutput>

Passing complex data

Structures, queries, and complex objects such as COM objects are passed to UDFs by reference,
so the function uses the same copy of the data as the caller. Arrays are passed to user-defined
functions by value, so the function gets a new copy of the array data and the array in the calling
page is unchanged by the function. As a result, you must handle arrays differently from all other
complex data types.
Passing structures, queries, and objects
For your function to modify the caller's copy of a structure, query, or object, you must pass the
variable as an argument. Because the function gets a reference to the caller's structure, the caller
variable reflects all changes in the function. You do not have to return the structure to the caller.
After the function, returns, the calling page accesses the changed data by using the structure
variable that it passed to the function.
If you do not want a function to modify the caller's copy of a structure, query, or object, use the
function to make a copy and pass the copy to the function.
Duplicate
210
Chapter 10: Writing and Calling User-Defined Functions
in quotation marks, so you can use this
IsCustomFunction
function on arguments that contain strings, you
Evaluate
--->

Advertisement

Table of Contents
loading

This manual is also suitable for:

Coldfusion mx

Table of Contents