Clearing local variables

Mark Waddingham mark at livecode.com
Thu Apr 28 11:47:15 EDT 2016


On 2016-04-28 03:31, Kay C Lan wrote:
> If you do not understand what isn't 'variable' and what really gets 
> checked
> at each iteration for each style of repeat then you are likely to see 
> some
> unexpected results. On the other hand, if do understand what is really
> going on, then you can modify x to your advantage in either case. As 
> for
> tVar in the 'repeat for each' case, I believe Mark Waddingham has 
> cautioned
> that although your scripts might currently work if you modify tVar mid
> repeat, LC is NOT guaranteed to behave the same way in the future.

Prior to 7.0 modifying the target variable inside a repeat for each 
would cause undefined behavior. i.e.

   repeat for each item tItem in tList
     delete any char of tList
   end repeat

Was always a really bad idea.

 From 7.0 onwards, this causes no problem as the engine takes a 'copy' of 
the target variable at the start of the loop. (Note you only pay for 
that copy when you mutate tList subsequently, and that mutation has no 
effect on the repeat for each loop being performed).

Warmest Regards,

Mark.

-- 
Mark Waddingham ~ mark at livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps




More information about the use-livecode mailing list