Обработка возврата очереди: out_r - PullRequest
2 голосов
/ 01 декабря 2010

У меня есть оператор, в котором я хочу удалить последний элемент в очереди, используя out_r.

Документы говорят, что возвращение

Result = {{value, Item}, Q2} | {пусто, Q1}
Q1 = Q2 = queue ()

Как мне справиться с этим, если я просто хочу получить очередь с удаленным элементом?

Как получить очередь и не учитывать {значение, элемент}?

например. NewQueue = queue:out_r(OldQueue)

Спасибо

1 Ответ

3 голосов
/ 01 декабря 2010

Использовать сопоставление с образцом!

{_, NewQueue} = queue:out_r(OldQueue)

Учитывая, что {value, Item} и empty возвращаются в качестве первого элемента кортежа, игнорирование первого элемента сделает то, что вы хотите.

Обратите внимание, что модуль очереди поддерживает 3 API. Другие API могут делать то, что вы хотите лучше. В этом случае у вас может быть та же функция, за исключением того, что она падает, если очередь пуста:

drop_r(Q1) -> Q2
Returns a queue Q2 that is the result of removing the rear item from Q1.
Fails with reason empty if Q1 is empty.

Выбор одного или другого зависит от ваших приложений и того, что вы ожидаете в очереди, если вы можете обработать пустое и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...