kw else
Зарезервированное слово
Список слов: §1.4
Синтаксис
ClusterClause = "seeds" Expr | "port" IntLit | "trace_sample" FloatLit | "auth" Block | "defaults" "{" { Ident Expr } "}"
| "role" Ident "{" RoleClause { ( ";" | NL ) RoleClause } "}"
| "assign" "by" Expr { "else" Expr } ;If = "if" ( Expr | "let" Pattern "=" Expr ) Block [ "else" ( If | Block ) ] ;SelArm = ( "recv" Pattern "from" Expr | "send" Expr "to" Expr | "after" Expr | "else" ) "=>" Expr ;Грамматика: Прил. A
Определяется в
- 8.7 Каналы и select — tx.send(x) приостанавливается при заполненном буфере; cap
- 5.4 Условия — Тернарного оператора нет.
- 1.2 Завершение инструкций — Инструкция завершается ; или переводом строки.
- 12.1 Объявление кластера — В программе не больше одного cluster.
- 1.4 Ключевые слова — Зарезервированные (нельзя использовать как имена)
- 4.8 Дженерики — Параметры: типовые T, константные const N
- 14.2 Динамическая конфигурация — dynamic Имя { … } — значения хранятся в координаторе, реплицируются на все узлы и меняются без перезапуска.
Примеры
let (tx, rx) = chan<Job>(cap: JOB_QUEUE)
select {
recv job from rx => process(job)
send r to results => sent += 1
after IDLE_TIMEOUT => log.info("idle")
else => tick() // неблокирующий вариант
}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Связанные диагностики
actor-not-hosted, cluster-auth, cluster-decl, cluster-needs, cluster-seeds, placement-conflict, saga-without-role, service-not-served, topic-without-journal, unknown-role, bound-not-satisfied, generic-args