Like numbers and strings, arrays are values so they are always (notionally) copied whenever they move between locations.
In 7+ this copying is deferred until needed (copy-on-write), prior to 7 they are copied immediately. So, yes, you can pass arrays around without worry. Mark. Sent from my iPhone > On 21 Sep 2015, at 03:28, Peter W A Wood <peterwaw...@gmail.com> wrote: > > I understand that arrays are passed by reference in LiveCode not by value. I > assume that is also that case if you return an array from a function (i.e. > the reference to the array is returned not its content). When I tried to > return an array from a function, I found that not only you can do so but > multiple calls of the function provide different arrays. As the array being > returned from the function is local to the function, I’m guessing that > LiveCode is creating a new local array for each function call and returning a > reference to the local variable. > > Here is the code that I ran under LiveCode Server: > > function returnArray > local a > put 1 into a[1] > return a > end returnArray > > put returnArray() into b > put b[1] & return —> prints 1 > > put returnArray() into c > put c[1] & return —> prints 1 > > put 3 into c[1] > > put b[1] & return —> prints 1 > put c[1] & return —> prints 2 > > Is it safe to use such a technique or will the reference to the array become > invalid at some stage? > > Peter > > > > > _______________________________________________ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode