5.4 Условия
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