Freya allows conditional expressions with a simple and intuitive syntax that imitates conditional statements. These expressions are equivalent to C#'s expressions based in the ternary infix operator x ? y : z.
Conditional expressions have this syntax:
if condition then expression1 else expression2
The condition must evaluate as a boolean expression. The result type of the whole conditional is the common type of expression1 and expression2.
Conditional expressions are very useful for inline implementations like this:
method Factorial(I: Integer): LongInt => if I <= 1 then 1 else I * Factorial(I - 1);
Conditional expressions also come handy for initializing inline variable declarations:
var rate := if DateTime.Today.DayOfWeek in [DayOfWeek.Saturday, DayOfWeek.Sunday] then 120.0 else 100.0;
Without conditionals, we would be forced to write something like this:
var rate: Double; begin // ... if DateTime.Today.DayOfWeek in [DayOfWeek.Saturday, DayOfWeek.Sunday] then rate := 120 else rate := 100; // ... end;
loosing all the advantages of an inline declaration.
The Freya Programming Language
Expressions
Common expression blocks
The null coalescing operator
if statement