kw select
Зарезервированное слово
Список слов: §1.4
Синтаксис
Select = "select" "{" { SelArm } "}" ;Query = "from" Pattern "in" Expr { "where" Expr } [ "order" "by" Ord { "," Ord } ]
[ "group" "by" Expr "into" Ident ] [ "skip" Expr ] [ "take" Expr ]
[ "load" "(" IdentList ")" ] [ "select" Expr ] ;Грамматика: Прил. A
Определяется в
- 8.7 Каналы и select — tx.send(x) приостанавливается при заполненном буфере; cap
- 5.9 Выражения запросов — Форма: from x in источник (where e)\* (order by e (asc|desc)?, …)?
- 1.4 Ключевые слова — Зарезервированные (нельзя использовать как имена)
- 8.2 Точки приостановки — Задача может уступить поток только в точках приостановки
Примеры
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 top = from o in db.Order
where o.userId == uid && o.total > MIN_TOTAL
order by o.createdAt desc
skip page * PAGE_SIZE
take PAGE_SIZE
load(items)
let names = from u in users where u.active select u.name // List в памяти
let byRole = from u in users group by u.role into g select (g.key, g.count())