Hi Rich

Are you coming from a c background?
Logically a object parameter is passed by reference, which means, the
address is passed to the method instead of a copy of the object's
values.
Technically the address itself is passed by value though, so you
cannot change it.

Cheers
Ralf.

On Nov 9, 2007 1:03 PM, quiet.mountain <[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> Hi,
>
>  I've read through all of the posts here on pointers and also this
>  page - http://www.mischel.com/diary/2006/07/24.htm, but can someone
>  clear up something that's been bothering me please?
>
>  Can a function change the value of a non-primitive type that's passed
>  as a parameter?
>
>  If I pass a reference to an object as a function parameter, the local
>  function variable then holds the address of the object on the heap.
>  Fine.
>
>  If I then attempt to make changes to this object within the function,
>  the address of the local function reference variable changes to
>  another address on the heap and creates a new object. The original
>  object is not updated. We end up with two reference variables
>  pointing to two different objects on the heap.
>
>  I thought the point of "pass by reference" for non-primitives in AS3
>  was to be able to manipulate objects directly by passing the hex
>  address of the object on the heap (as in c++)
>
>  I understand that a solution is to return the local reference to the
>  temporary object from the function and assign it to the class
>  instance variable, so this is more an exercise in understanding the
>  essential workings of AS3.
>
>  Here's some code.
>
>  ----- AS3 Code starts -----
>
>  private var collectionAC:ArrayCollection = new ArrayCollection();
>  // Debug: value of collectionAC is @4deb859
>
>  private function resultHandler(event:ResultEvent, ac:ArrayCollection)
>  {
>  // Debug: value of ac is also @4deb859
>  // There are now 2 reference variables pointing to
>  // one object on the heap
>
>  ac = event.result.products.rug;
>
>  // Debug: value of ac is now @4f839e1
>  // ?WHY? does this line create a new object scoped to
>  // the function and not modify the original object directly?
>  }
>
>  ------ MXML code starts ----------
>
>  <mx:HTTPService id="collectionService"
>  url="data/collection.xml"
>  result="resultHandler(event, collectionAC);"/>
>
>  ------ Code ends --------
>
>  Many thanks, Rich
>
>  



-- 
Ralf Bokelberg <[EMAIL PROTECTED]>
Flex & Flash Consultant based in Cologne/Germany
Phone +49 (0) 221 530 15 35

Reply via email to