OxL Справочник OxL
РусскийEnglish

5.4 Условия

oxl
let kind = if n < 0 { "neg" } else if n == 0 { "zero" } else { "pos" }
if let User{ role: .Admin, name, .. } = u { greet(name) }
if x is Receipt { save(x) }          // x сужен до Receipt

Тернарного оператора нет. if без else имеет тип ().

  • Тип if/match — общий ожидаемый тип, если он задан контекстом, иначе объединение типов веток (if c { s } else { EmptyCart{} } имеет тип CartSnapshot | EmptyCart).
  • e is P — проверка образца P (§5.5) как логическое выражение. Привязки образца видны в ветке if и в правой части &&: if caller is .User(id: uid, ..) && uid == owner { … }. Вариант enum в is пишется с точкой (.User), чтобы не путать с типом.

См. также

Исходник: docs/spec/oxl-standard.md