You are looking at the wrong example! Clearly, for variable assignment
you don't gain anything. But for a function argument you do!

Realy?

  WriteLn('The value is ',(if X then 'true' else 'false'),
          ' at the moment.');

Well, *this* can be done much easier ;-):

-------------------------------------------
WriteLn('The value is ',X,' at the moment.');
-------------------------------------------

But even if X is not boolean I would find that much more readable:

-------------------------------------------
if X then s := 'true' else s := 'false',
WriteLn('The value is ',s,' at the moment.');
-------------------------------------------

Even with the need of an intermediate variable (most of the time you can reuse an existing variable) I would prefer this one over the quite confusing nesting of case statement in an expression. It states much clearer what happens.

  MakeBackup(FileName,ChangeExtension(FileName,
    case BackupExtension of
      exBak   : '.bak';
      exBkp   : '.bkp';
      exTilde : '~';
    else '.bak'
    End));

Again, this would be much clearer code:

-------------------------------------------
case BackupExtension of
   exBak   : s := '.bak';
   exBkp   : s := '.bkp';
   exTilde : s := '~';
else          s := '.bak'
   End;
MakeBackup(FileName,ChangeExtension(FileName,s));
-------------------------------------------
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to