[Mediawiki-l] parserfunctions question: evaluate vs. display?
Rolf Lampa
rolf.lampa at rilnet.com
Tue Apr 8 18:02:26 UTC 2008
Daniel Barrett skrev:
> In a parserfunctions statement like this:
>
> {{#if: {{#some-condition:}} | {{#some-big-computation:}} }}
>
> if #some-condition is false, which of the following should happen?
>
> 1. #some-big-computation gets fully evaluated, but results are not
> displayed
> 2. #some-big-computation is not evaluated at all
>
> Looks like choice #1 is happening in MW 1.12.0, which is bad if
> #some-big-computation has side-effects or is very expensive. Is this
> correct behavior?
>
It's absolutely crucial to short circuit boolen logic at first false
result - in cases logically equivalent to AND operations.
Your example contains just such a case, the is, your 1:st expression
should behave equivalent to
{{
if {{#some-condition1}} and <--- break here if "false"!
{{#some-condition2}} and
{{#some-conditionN}}
then // do this (else nothing)
}}
In for example Delphi the behaviour for boolean expressions is optional.
Default setting for "complete boolen evaluation" is = False, that is,
the compiler will produce logic which short circuits at first false
result. And this short circuit is very powerful for optimizing code
execution.
Regards,
// Rolf Lampa
More information about the MediaWiki-l
mailing list