[fpc-pascal] New feature: IfThen() intrinsic
Michael Van Canneyt
michael at freepascal.org
Tue Feb 2 10:49:03 CET 2016
On Tue, 2 Feb 2016, Serguei TARASSOV wrote:
> On 02/02/2016 10:29, fpc-pascal-request at lists.freepascal.org wrote:
>> 2016-02-01 10:59 GMT+01:00 Michael Schnell<mschnell at lumino.de>:
>> Same here. I see no reason to differ from it. Introducing new
>> incompatibility is bad idea. For me is good to have booth (Oxygene
>> compatible):
>>
>> x := iif (a < 3, 1, 2);
>> V := If a < 3 then 1 else 2;
>>
>> sometimes is better to use first option and sometimes is better to use
>> second option. Both Oxygen compatible and very "pascalish".
> No, the second is always better because safer.
>
> x := iif (Obj = nil, 0, Obj.Value);
> This will raise access violation as a normal function or you depend on
> compiler implementation for this special case. And you should remember an
> additional special case of function.
>
> x := iif Obj = nil then 0 else Obj.Value;
> Doesn't raise AV because it's a statement, not function.
It is not a statement, it is an expression.
I prefer
x := iif Obj = nil then 0 else Obj.Value;
over
x := if Obj = nil then 0 else Obj.Value;
Because it clearly differentiates between if (a statement) and iif (an
expression)
So the iif in either functional or expression form has my vote.
Michael.
More information about the fpc-pascal
mailing list