[fpc-pascal] New feature: IfThen() intrinsic

Jürgen Hestermann juergen.hestermann at gmx.de
Tue Feb 2 17:55:49 CET 2016


Am 2016-02-02 um 11:41 schrieb Mark Morgan Lloyd:
 > Michael Van Canneyt wrote:
 > Yes, and that's why to get the desired semantics it's more appropriate to use  if then else  rather than  iif()  etc.
 > Please correct me if I'm wrong, but my understanding is that in all cases where parameters are passed to a procedure or function
 > they are evaluated and placed on the stack before the code is called. However the  if then else  statement never, under any circumstances,
 > executes code in the untaken statement/block, and it is that which is the required behaviour for an "inline if" expression.

Yes, I fully agree.
If the behaviour is/will be exactly the same as "if .. then ... else" then it should
also get a name that shows this clearly.
Therefore, I would still vote for "IfThenElse(.. , .. , ..)".
"InlineIf(.. , .. , ..)" would be ok too but not as clear as "IfThenElse".

If "IIF" in other languages is more of a function in these languages (so both branches are evaluated in all cases)
then I would not use the same name in Pascal but implement a different behaviour.
Would this be possible in other languages:

var c : char;
     s : string;

c := IfThenElse(Length(s)=0,' ',S[1]);

?



More information about the fpc-pascal mailing list