Re: if statement not working

new topic     » goto parent     » topic index » view thread      » older message » newer message

On 22 Mar 2002, at 18:03, Derek Parnell wrote:

<snip>

I just use equal() on everything now.

<snip>

> >2. Using slices on strings. This "gotcha" was a handmine that littered a lot
> >of
> >my early code. This initially looks like a good idea, until you get a string
> >shorter than you expected. So you write:
> >
> >   if s[1..3] = "/* "
> >
> >and the code goes into cardiac arrest if the length of s is less than 3. If
> >nothing else, Euphoria should offer a substring function that would provide
> >some safety:
> >
> >   if substr( s, 1, 3 ) = "/* "
> >
> >Of course, it would have to pad the string that's returned with nulls so the
> >length would match what was expected, or else *boom*.
> >
> >Adding short-circuiting helps, but still, I think it's a nasty trap that 
> >could easily turn someone away from using Euphoria.
> 
> I just tripped against this stupid restriction again last night. I've written
> a
> function called begins() to help me out, but it ain't pretty.
> 
>    if begins(s, t) then ...
> 
> I originally wrote:
> 
>    if equal(s[1..length(t)], t) then ...
> 
> but this fails whenever s is shorter than t. 

This, to me, is a no-brainer. As much of s should be returned as possible, up 
to length(t), so what if you ask for more than what is there? This, and the 
equal() thing, is why i mentioned mirc yr(s) ago, even if you consider it a non-
language, it runs without crashing in that example. You toss enough of these 
features at a newbie, and they will leave. I was just at a standstill in Pascal,
and C, and not getting anywhere with anything else at the time, i was 
frustrated enough to stay with Eu longer than normal.

Kat

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu