У меня есть то, что я считаю самым распространенным случаем для обработки очереди. Я буду читать фронт очереди, действовать на элемент (который может привести к добавлению большего количества элементов в очередь), а затем цикл до тех пор, пока очередь не будет пуста.
- Мой первый инстинкт был
foreach
, но нет, видимо, очередь (даже измененная) строгая, а foreach - петли над всеми элементами, находящимися в очереди, когда начинается итерация. - Я не могу понять синтаксис цикла
while
.
Вы думаете, что это будет что-то вроде
while (!q.isEmpty) {
var (e, q) = q.dequeue
... }
будет работать, за исключением того, что я обновляю q
. Это работает:
while (!q.isEmpty) {
var (e, q1) = q.dequeue
q = q1
... }
но человек, это выглядит неправильно...