and am I correct in saying that there is no way to do a pass by value
or duplicate() on a component?

On 9/26/05, Barney Boisvert <[EMAIL PROTECTED]> wrote:
> Correct.  That's what pass-by-reference means.  There is only ever a
> single instance of the "thing" in question, and when you assign it to
> another variable, you're just making a new reference to the same
> object.  Pass-by-value, on the other hand, creates a new copy of the
> "thing" across assignments, and the two instances are completely
> unrelated.
>
> Primitive types are almost always pass-by-value, while complex types
> are almost always pass-by-reference.  The notable exception is CF
> arrays, which are pass-by-value (for some unknown reason).  Note,
> however, that the pass-by-value is a shallow copy, not a deep copy, so
> if you have pass-by-reference types in an array, the array is
> duplicated but the objects inside are not.
>
> <cfset a = arrayNew(1) />
> <cfset s = structNew() />
> <cfset s.name = "barney" />
> <cfset arrayAppend(a, s) />
> <cfset s.name = "heather" />
> <cfset arrayAppend(a, s) />
> <cfdump var="#a#" />
> <cfset a2 = a />
> <cfset s = structNew() />
> <cfset s.name = "ryan" />
> <cfset arrayAppend(a, s) />
> <cfdump var="#a#" />
> <cfdump var="#a2#" />
>
> That code will illustrate all three concepts (array pass-by-value,
> struct pass-by-reference, and shallow copy of arrays).  Make sure you
> manually figure out what you expect it to do before running it.
>
> cheers,
> barneyb
>
> On 9/26/05, Ryan Guill <[EMAIL PROTECTED]> wrote:
> > Okay, so taking this a step further, If I take a component and create
> > an object out of it, stored in varible x, set variable y equal to
> > variable x, change a value in variable x, the value in y should have
> > changed as well?
> >
>
>
> --
> Barney Boisvert
> [EMAIL PROTECTED]
> 360.319.6145
> http://www.barneyb.com/
>
> Got Gmail? I have 100 invites.
>
>
> ----------------------------------------------------------
> You are subscribed to cfcdev. To unsubscribe, send an email to 
> [email protected] with the words 'unsubscribe cfcdev' as the subject of the 
> email.
>
> CFCDev is run by CFCZone (www.cfczone.org) and supported by CFXHosting 
> (www.cfxhosting.com).
>
> CFCDev is supported by New Atlanta, makers of BlueDragon
> http://www.newatlanta.com/products/bluedragon/index.cfm
>
> An archive of the CFCDev list is available at 
> www.mail-archive.com/[email protected]
>
>
>


--
Ryan Guill
BlueEyesDevelopment
[EMAIL PROTECTED]
www.ryanguill.com
(270) 217.2399
got google talk?  Chat me at [EMAIL PROTECTED]

The Coldfusion Open Application Library - COAL - http://coal.ryanguill.com

www.ryanguill.com/
The Roman Empire: www.ryanguill.com/blog/


----------------------------------------------------------
You are subscribed to cfcdev. To unsubscribe, send an email to 
[email protected] with the words 'unsubscribe cfcdev' as the subject of the 
email.

CFCDev is run by CFCZone (www.cfczone.org) and supported by CFXHosting 
(www.cfxhosting.com).

CFCDev is supported by New Atlanta, makers of BlueDragon
http://www.newatlanta.com/products/bluedragon/index.cfm

An archive of the CFCDev list is available at 
www.mail-archive.com/[email protected]


Reply via email to