Array by reference wierdness
Monkey Forums/Monkey Programming/Array by reference wierdness| 
 | ||
| This works: 
Function vecAbs:Void(dest:Float[],a:Float[])
     dest[0]=Abs(a[0])
     dest[1]=Abs(a[1])
     dest[2]=Abs(a[2])
end
This doesn't: 
Function vecAbs:Void(dest:Float[],a:Float[])
     dest=[Abs(a[0]),Abs(a[1],Abs(a[2])]
end
That doesn't seem right, right? Cheers Charlie | 
| 
 | ||
| Arrays are immutable (though their contents can change).  It's similar to what happens when you pass a string as a parameter to a function and try to change it. | 
| 
 | ||
| So that's expected behaviour then? What's the reason for not being able to pass by reference, sure;y it's available on all the main targets? Cheers Charlie | 
| 
 | ||
| I suspect it's a combination of technical reasons and preference. You could always wrap your array in an object if you want to do this. This would enable you to have a null valued 'array object' too, another thing which arrays as currently constituted don't do. | 
| 
 | ||
| Hi, I suspect what you're after is 'Var' params ala BlitzMax, eg: Function vecAbs:Void( dest:Float[] Var,a:Float[] ) But this is not supported on many targets - C++/C# are the only ones I think. |