Split to Array on Repeat Skips Every Other Line??

Alex Tweedly alex at tweedly.net
Mon May 16 06:25:51 EDT 2005


Sivakatirswami wrote:

> OK, well I solved the problem by taking the split out of the loop to a 
> function, now it works. But I still think this is a bug.
>
No, I don't agree. The docs say very clearly

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

since "split" does change x (into an array, and to a different value), 
you're breaking the rule, and can't expect this to work.

Passing x as a parameter to the function passes a *copy* of the data, 
and hence avoids breaking the rule.

I'm not sure what Rev intended by the phrase "cause a script error" - it 
certainly doesn't cause the script to stop with the error box, in any 
example I could think of - but it does produce "unexpected" results in 
some cases.

> on mouseUp
>    repeat for each line x in gLogData
>       put returnLogEntry(x) & cr after tLog
>    end repeat
>   put tLog into fld "logViewer"
> end mouseup
> function returnLogEntry x
>   split x with "|" and tab
>   return (x["Project"] & tab &  (x["hours"] 
> +round(x["hour-fraction"],2)) & tab & x["Fund_Category"])
> end returnLogEntry
>
> Now I get all six lines as expected:
>
> Online-Donations    5.41    Public Services
> Publishers-Desk-Interface    1.25    Public Services
> Digital-Dharma-List    6.5    Public Services
> Web-Editor-Upgrade    2.17    Public Services
> Publishers-Desk-Interface    6.75    Funded Projects
> Online-Donations    1.08    Public Services
>
> skts

-- 
Alex Tweedly       http://www.tweedly.net



-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.308 / Virus Database: 266.11.9 - Release Date: 12/05/2005



More information about the use-livecode mailing list