Skip to main content
Ben Nadel
On User Experience (UX) Design, JavaScript, ColdFusion, Node.js, Life, and Love.

StructAppend() the Forgotten Function

By Ben Nadel on
Tags: ColdFusion

In my applications, I create an Attributes object (REQUEST.Attributes), which is a unbinding of the URL and the FORM scope. I was first introduced to this idea in FuseBox and I really like how it can simplify a good amount of code.

I was going over the code I use to create this last week. I thought my code was very simple, and yet some how, my boss, Jim Curran, was able to make a suggestion to simplify it even further. StructAppend(). Admittedly, I had to look it up because I wasn't exactly sure what it did - I am not sure I have ever used it.

Well, it does exactly what I wanted it to do. Of course, the code was very simple before, but now, it is even more so. I was able to take this:

// Copy the URL into the Attributes sturct. Unless we want to explicitly get
// information from the FORM variables (as we do in add/edit screens), we are
// just going to get it from the Attributes object to make things simpler and
// the scoping more consistent.
REQUEST.Attributes = Duplicate(URL);

// Now, go over the form variables and copy those into attributes.
for (LOCAL.Key in FORM){
	REQUEST.Attributes[ LOCAL.Key ] = FORM[ LOCAL.Key ];
}

and make it this:

// Copy the URL into the Attributes sturct. Unless we want to explicitly get
// information from the FORM variables (as we do in add/edit screens), we are
// just going to get it from the Attributes object to make things simpler and
// the scoping more consistent.
REQUEST.Attributes = Duplicate(URL);

// Now, move the form values into the Attributes object.
StructAppend( REQUEST.Attributes, FORM );

As you can see, the difference is small, but we have removed a coded Loop and let ColdFusion handle the process with a built-in, hopefully more efficient method. All to say, sometimes, I try to come up with a solution that ends up being more complicated than a solution that is built into ColdFusion. This only goes to emphasize the point that people really need to understand the basics of the language.


Reader Comments