If / Else
Cairo supports the condition statements if
and if ... else
. else if
statements are currently not supported.
Conditions can be combined with the and
operator.
In addition to the regular conditional statement one can also use the "Multiplication Trick" to create an inline-if condition statement (conditional ternary operator).
Example
# Importing booleans from Cairos standard library.
from starkware.cairo.common.bool import TRUE, FALSE
func main():
alloc_locals
local result
# `if` statement.
if 1 == 0:
result = FALSE
end
assert result = TRUE
# `if` statement with `and`.
if 1 == 0 and 0 == 1:
result = FALSE
end
assert result = TRUE
# `if` - `else` statement.
if 1 == 1:
result = TRUE
else:
result = FALSE
end
assert result = TRUE
# The condition we want to check
let condition = 1
# The "Multiplication Trick".
# `result` will be `0` (false) if `condition` is either `1` or `2`.
# Note: This trick helps to avoid issues related to Revoked References.
let result = (condition - 1) * (condition - 2)
assert result = 0
return ()
end