Note: information on this page refers to Ceylon 1.2, not to the current release.

if expression

An if expression allows the expression to take either one result or another result depending on a condition. It is the expression analog of a statement-level if/else control structure.


String greeting = if (exists name) then "hello " + name else "hello world";


When writing an expression it is often inconvenient to have to "hoist" some simple conditional logic into a number of statements using an if/else control structure. For example, compare using the expression form in an invocation:

print(if (exists name) then "hello " + name else "hello world");

with code which codes the same thing using the statement form:

String greeting;
if (exists name) {
    greeting = "hello " + name;
} else {
    greeting = "hello world";

Flow typing

if expressions support condition lists, type narrowing etc, just like the if/else control structure.


The type of an if expression is the union type of the then expression and the else expression.

Compared to then and else operators

It is worth pointing out that as well as the if expression Ceylon also has distinct then and else operators.

When used together in the then/else idiom the effect is similar to a simple if expression, but while then/else is adequate for a simple conditional

print(hello then "hello world" else "goodbye world");

it's not powerful enough to be an alternative to the if expression when the branches require flow typing of is, exists or nonempty conditions to the branches

print(if (exists name) then "hello " + name else "hello world");

See also