What if....

Mike Bonner bonnmike at gmail.com
Sun Jan 27 13:56:15 EST 2013


No real leeway with the parens, useful though to force the correct values
to be evaluated first though.


On Sun, Jan 27, 2013 at 11:53 AM, Mike Bonner <bonnmike at gmail.com> wrote:

> ifs are evaluated left to right, though there is some leeway using parens.
>
> As to your question though, yes putting slower evals at the end of a
> string of ands and ors does save time if the if fails before the slow parts.
>
> Did the following in a button to test. Just change one of the first
> conditions to be false and the long myfunc call is never hit.  Placed
> parens around the myfunc() to demonstrate that they don't give precedence
> in this situation.
>
> *on* mouseUp
>
>    *if* 1 is 1 and 2 is 2 and (myfunc()) *then* *put* "It's all true"
>
> *end* mouseUp
>
>
> *function* myFunc
>
>    *repeat* 10000 times
>
>       *put* random(10)
>
>    *end* *repeat*
>
>    *if* random(2) is 1 *then*
>
>       *return* true
>
>    *else*
>
>       *return* false
>
>    *end* *if*
>
> *end* myFunc
>
>
>
> On Sun, Jan 27, 2013 at 11:39 AM, Peter Haworth <pete at lcsql.com> wrote:
>
>> Musings about complex if statements on this Sunday morning....
>>
>> Lets say you have a complex if statement with 4 conditions that must all
>> be
>> true.  Is there any advantage, other than personal preference/style, to:
>>
>> if cond1 and cond2 and cond3 and cond4 then.....
>>
>> or
>>
>> if cond1 then
>>    if cond2 then
>>       if cond3 then
>>          if cond4 then...
>>
>> In either case, as soon as a condition evaluates to false, none of the
>> rest
>> are evaluated, right?  If so, then always best to put the conditions that
>> take the longest to evaluate further down the list, for example perhaps an
>> SQL SELECT statement that might take a while to execute?  But then what if
>> some of the conditions are in parens, for example:
>>
>> if cond1 and cond2 and (cond3 and cond4) then....
>>
>> The manual says the grouping operator (parens) has the highest precedence
>> so does this mean (cond3 and cond4) will be evaluated before cond1 and
>> cond2?
>>
>> Just curious.
>>
>>
>> Pete
>> lcSQL Software <http://www.lcsql.com>
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>
>
>



More information about the use-livecode mailing list