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

then operator

The left-associative, binary then operator evaluates its right operand only when it's left operand is true, otherwise it evaluates as null.


void m(String s) {
    String? s2 = s.empty then "hello";



The then operator is defined in terms of an if expression as follows

if (lhs) then rhs else null

See the language specification for more details.

The then/else idiom

The then operator is often used with the else operator to emulate C's ternary operator cond ? when-true-expr : when-false-expr, like so

T|F result = cond then whenTrueExpr else whenFalseExpr;

Compared to if expressions

Distinct from the then/else idiom Ceylon has a separate if expression:

if (cond) then whenTrueExpr else whenFalseExpr;

The if expression is more powerful than the then/else idiom, since it supports flow typing of is, exists or nonempty conditions to the branches


The result type of the then operator is the optional type of the right hand operand;

See also