| sidebar_position | 5 |
|---|
In addition of being instructions, if and match with also come as conditional expressions.
Expression if e then a else b evaluates to the evaluation of expression a if boolean expression e evaluates to true, and to the evaluation of b otherwise.
a and b must be of same type.
For example:
const r = if now > deadline then 10% else 2%
Expression match with deconstructs a value of enumerated type to extract data from it.
Like match with instruction, enumerated types are option, or, list, states and composite type enum.
For example on a option value prize of type option<tez>:
const fee =
match prize with
| some(v) -> 20% * v
| none -> 5tz
end
See the instruction equivalent for examples of desconstruction on the other enumerated types.
As for if expression above, expressions for each enumerated value must be of same type.
When a is of type bool, expression a ? b : c is a synonym of if a then b else c.
For example:
const ratio = balance > threshold ? 5% : 10%
When a is of type option, expression a ? b : c is another syntax to fold the optional value a, where:
bis the expression to evaluate in caseaissomevaluecis the expression to evaluate in caseaisnone
The the keyword is used in b to refer to the argument of the some value.
For example, if prize is of type option<tez>:
const reward = prize ? 20% * the : 5tz
It is equivalent to:
const reward =
match prize with
| some(v) -> 20% * v
| none -> 5tz
end