Inconsistent Behavior of Lists
Alex Tweedly
alex at tweedly.net
Thu Sep 16 17:54:40 EDT 2004
At 09:50 16/09/2004 -0400, Frank D. Engel, Jr. wrote:
>Hmm... that explains the strange behavior of lines too.
>
>If I set up a field as a list box with records from a database:
>......
>Which works as I wish it to. So the list box field looks at that empty
>line as being a valid, usable line, but the other commands do not?
Not sure just how the list box looked at it, but your description sounds
convincing.
>Is there a reason why this is also considered consistent?
Yes, kind of.
Forget, for the moment, that you're trying to parse some text - in fact,
forget about Rev for a moment. If you took any normal text file on most
computers, the last character would be a <cr> (or equivalent). If you asked
99.99% of users "what's the last line in this file?" they'd tell you it was
the sequence of characters up to and including that <cr> (though most of
them wouldn't really consider the fact that there was a <cr> there, many
wouldn't even be aware there was).
None of them would tell you the last line was a blank line !
So for normal text processing of normal text files, Rev gives you the
behaviour expected by most everyone.
But if you look at it from a programmer's viewpoint, then you do indeed run
into the fact that it is (in some sense) inconsistent.
This difference in viewpoints means that there's no "100% correct" answer
for everyone - and I think Rev (presumably following all the other xTalks)
has made a reasonable choice. But it does take some care to avoid "fragile"
coding.
I've seen a number of example scripts that did something like
put empty into myVar
repeat for (some circumstances)
if (some condition) then put (someVar) & comma after myVar
end repeat
delete the last char of myVar -- remove extra trailing comma
which is OK *only* if you know the last item was not empty (i.e. usually,
only if empty items are not valid in context).
-- Alex.
-- Alex.
More information about the use-livecode
mailing list