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. |