A curious case

Björnke von Gierke bvg at mac.com
Wed Mar 2 10:58:17 EST 2011


I always thought that the dozens of ways to use if-then-else constructs in LC are too much options. I always use each on it's own line, because otherwise it's just so hard to read and decipher. Even for super simple cases:

if the visible of me then
  exit repeat
end if

On 2 Mar 2011, at 16:40, Nonsanity wrote:

> Others have answered this pretty well, but I thought I'd add some examples
> for clarity - With future readers in mind.
> 
> The following won't work:
> 
> if x = 1 then
>    doSomething
> else if x = 2 then
>    if y = 3 then doSomethingElse
> else if x = 2 then  -- little lost else
>    doThirdThing
> end if
> 
> This is because the y = 3 line thinks the next else belongs to it, like so:
> 
> if x = 1 then
>    doSomething
> else if x = 2 then
>    if y = 3 then doSomethingElse
>    else if x = 2 then
>       doThirdThing
>    end if
> 
> Because the following is a valid if-else format:
> 
>    if true then Blah1
>    else Blah2
> 
> If there's another line between the dangling if and the parent structure's
> next else, all is fine.
> 
> if x = 1 then
>    doSomething
> else if x = 2 then
>    if y = 3 then doSomethingElse
>    get it
> else if x = 2 then
>    doThirdThing
> end if
> 
> But the best practice, as Terry said, is to use the long form in situations
> like these.
> 
> if x = 1 then
>    doSomething
> else if x = 2 then
>    if y = 3 then
>        doSomethingElse
>    end if
> else if x = 2 then
>    doThirdThing
> end if
> 
> That way the code is clear to everyone, at least in regard to
> else-ownership. Clarity of the code itself varies by programmer... :)
> 
> 
> ~ Chris Innanen
> ~ Nonsanity
> 
> 
> 
> On Tue, Mar 1, 2011 at 7:40 PM, Bob Sneidar <bobs at twft.com> wrote:
> 
>> Hi all.
>> 
>> I just came across a curious issue where I had an if then else control
>> structure inside another if then structure.
>> 
>> I *thought* I used toe be able to use the form
>> 
>> if statement then
>>   -- do somestuff
>> else if anotherstatement then
>>   -- do someotherstuff
>> else
>>   -- do defaultstuff
>> end if
>> 
>> When I nested this inside another if then else control structure it told me
>> I was missing an end if! However if I converted the above structure to a
>> switch control structure the script compiled fine. Have I stumbled upon
>> something here? It kind of makes sense to me because the compiler may be
>> having trouble knowing which control structure *else if anotherstatement*
>> belongs to.
>> 
>> This is not a problem per se, but I am just curious and it may help someone
>> else who encounters it in the future to not spend an hour or two poring over
>> code that is technically correct but won't compile.
>> 
>> Bob

-- 

official ChatRev page:
http://bjoernke.com?target=chatrev


Chat with other RunRev developers:
go stack URL "http://bjoernke.com/chatrev/chatrev1.3b3.rev"





More information about the Use-livecode mailing list