π Welcome to the new Aptos Docs! Click here to submit feedback!

Conditionals

An `if` expression specifies that some code should only be evaluated if a certain condition is true. For example:

``````script {
fun example() {
if (x > 5) x = x - 5
}
}``````

The condition must be an expression of type `bool`.

An `if` expression can optionally include an `else` clause to specify another expression to evaluate when the condition is false.

``````script {
fun example() {
if (y <= 10) y = y + 1 else y = 10
}
}``````

Either the βtrueβ branch or the βfalseβ branch will be evaluated, but not both. Either branch can be a single expression or an expression block.

The conditional expressions may produce values so that the `if` expression has a result.

``````script {
fun example() {
let z = if (x < 100) x else 100;
}
}``````

The expressions in the true and false branches must have compatible types. For example:

``````script {
fun example() {
// x and y must be u64 integers
let maximum: u64 = if (x > y) x else y;

// ERROR! branches different types
let z = if (maximum < 10) 10u8 else 100u64;

// ERROR! branches different types, as default false-branch is () not u64
if (maximum >= 10) maximum;
}
}``````

If the `else` clause is not specified, the false branch defaults to the unit value. The following are equivalent:

``````script {
fun example() {
if (condition) true_branch // implied default: else ()
if (condition) true_branch else ()
}
}``````

Commonly, `if` expressions are used in conjunction with expression blocks.

``````script {
fun example() {
let maximum = if (x > y) x else y;
if (maximum < 10) {
x = x + 10;
y = y + 10;
} else if (x >= 10 && y >= 10) {
x = x - 10;
y = y - 10;
}
}
}
``````

Grammar for Conditionals

if-expression β if ( expression ) expression else-clauseopt

else-clause β else expression