This didn't quite make the docs, nor do I think it was mentioned at CFUNITED, but one of the more interesting functions added to ColdFusion 9 is getFunctionCalledName. This returns the name of the calling function. Here is a somewhat useless example:

<cfscript> function foobar() { return getFunctionCalledName(); } </cfscript>

<cfoutput>#foobar()#</cfoutput>

This returns foobar, since the result of getFunctionCalledName is the name of the currently executing method. A slightly more sensible example, created by Elliott Sprehn, is the following:

component { variables.x = 1; variables.y = 2;

function init() { return this; }

function get() { var name = getFunctionCalledName(); return variables[mid(name,4,len(name))]; }

function set(value) { var name = getFunctionCalledName(); variables[mid(name,4,len(name))] = value; }

this.getX = get; this.getY = get; this.setX = set; this.setY = set; }

Notice a few things in play here. He created one generic get and set function and then made copies of them for getX/getY and setX/setY. The generic functions work by using the getFunctionCalledName to figure out the real name of the function and update the appropriate value. As an example:

<cfset es = new es()> <cfdump var="#es#"> <cfset es.setX("foo")> <cfoutput>#es.getX()#</cfoutput>

So can folks think of any interesting uses for this?