Split is Behaves Unexpectedly?
benr_mc at cogapp.com
Tue Mar 11 12:42:21 EDT 2008
On 19/2/08 20:48, Web Admin Himalayan Academy wrote:
> Mark Smith wrote:
>> However, the solution is very simple:
>> repeat for each line tLine in tList
>> put tLine into tempLine
>> <doSomething to tempLine>
>> end repeat
> Excellent! I knew it was something simple... split is too important to
> be broken. And I can understand the contraints (if you think of it from
> a binary point of view.. pointers and all...)
> Thanks Mark...
>> On 19 Feb 2008, at 12:37, Björnke von Gierke wrote:
>>> Yes this is completely counter intuitive, and completely stupidly
>>> broken from a user perspective:
>>> On 19 Feb 2008, at 03:15, chris bohnert wrote:
>>>> from the docs on repeat foreach:
>>>> Important! You cannot change the labelVariable in a statement
>>>> inside the
>>>> loop. Doing so will cause a script error. You can change the content
>>>> of the
>>>> container, but doing so will probably produce unexpected results.
This is such a common gotcha: on a quick review, I found #248, #1026, #3139,
#5157, #5605 in addition to the report Björnke cited.
Once upon a time, the compiler caught at least some of these instances, so you
at least got an immediate error that modifying the loop variable inside the
loop wasn't supported; however at some point post 2.0 (?) that was lost.
To my mind, this is the kind of efficiency hack/potential cause of confusion
that Rev should sacrifice in favour of avoiding confusion. I'd love to see it
sorted once and for all. Votes are currently all centered on #3036 - I'd urge
adding your votes there to help push this issue up RunRev's (post-2.9)
More information about the Use-livecode