kw for
Зарезервированное слово
Список слов: §1.4
Синтаксис
Impl = "impl" [ Type "for" ] Type "{" { ImplMember } "}" ;Provide = "provide" Type "=" Expr [ "for" "role" IdentList ] ;For = [ Label ":" ] [ "inline" ] "for" [ "await" ] Pattern "in" Expr [ "where" Expr ] Block ;Грамматика: Прил. A
Определяется в
- 5.6 Циклы — for принимает Iterable<T> (в том числе iter<T>, коллекции, диапазоны); for await — Streamable<T>.
- 1.4 Ключевые слова — Зарезервированные (нельзя использовать как имена)
- 4.6 Интерфейсы — Интерфейсы структурные
- 3.8 Асинхронные и потоковые типы — Асинхронные и потоковые типы
- 10.3 Стримы — Тип stream<T, E = never>.
- 10.5 Топики — рассылка по кластеру — Топик — распределённый broadcast с хранением во встроенном хранилище.
- 14.2 Динамическая конфигурация — dynamic Имя { … } — значения хранятся в координаторе, реплицируются на все узлы и меняются без перезапуска.
- 8.2 Точки приостановки — Задача может уступить поток только в точках приостановки
Примеры
for u in users { … }
for (i, u) in users.enumerate() { … }
for i in 0..n where i % 2 == 0 { … } // фильтр
for await msg in input { … } // stream<T>
while cond { … }
while let x? = queue.pop() { … }
loop { if done { break result } } // loop — выражение
'outer: for a in xs { for b in ys { if a == b { break 'outer } } }@retain(ORDER_EVENTS_RETENTION)
topic OrderEvents: OrderEvent sharded by .userId
emit OrderEvents(e) // публикация
for await e in OrderEvents.subscribe(key: uid, from: .Latest) { … }
for await e in OrderEvents.subscribe(group: "indexer") { index(e) }— 10.5 Топики — рассылка по кластеру
Связанные диагностики
break-value, outside-loop, explicit-interface, interface-not-satisfied, yield-outside-stream, topic-without-journal