kingbiz...@gmail.com wrote:
I come here humbly to ask for a new implementation, the IIF ?:, the IIF
is a shortcut that make the coding a little faster, it works by
returning a true or a false part of a condition, a more detailed
information can be found there: http://en.wikipedia.org/wiki/%3F:

*PHP and C++ implementation:* Value *=* condition *?* value if true *:*
value if false;
*Pascal implementation:* Value := IfThen(Condition, TruePart, FalsePart);

*function IfThen(Condition: Boolean; IfTrue, IfFalse: X): X; overload;
begin
if Condition then Result := IfTrue else Result := IfFalse;
end;
*

Note that there is a tiny little difference between those two.

the ?: operator evaluates either the TruePart or FalsePart while IfThen will evaluate both parts first.

The following will succeed

var
  p: PInteger;
  i: Integer;
begin
  p := nil;
  i := p <> nil ? p^ : 0;
end;

The following will fail

var
  p: PInteger;
  i: Integer;
begin
  p := nil;
  i := IfThen(p <> nil, p^ , 0);
end;
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to