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