erlang - 处理队列的返回:out_r

标签 erlang

我有一个语句,我想使用 out_r 删除队列中的最后一项。

文档说返回的是

Result = {{value, Item}, Q2} | {empty, Q1}
Q1 = Q2 = queue()

如果我只想获取已删除项目的队列,我该如何处理?

如何获取队列并忽略 {value, item}?

例如 NewQueue = 队列:out_r(OldQueue)

谢谢

最佳答案

使用模式匹配!

{_, 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.

选择其中之一取决于您的应用程序以及您期望队列中的内容、是否可以处理空应用程序等。

关于erlang - 处理队列的返回:out_r,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4323857/

相关文章:

c - Erlang:阻止 C NIF 调用行为

memory-leaks - Erlang 应用程序中观察到的内存泄漏

multithreading - Erlang 进程如何(如果有的话)映射到内核线程?

erlang - Erlang( cometd 聊天)中的消息队列模型?

erlang - Erlang 中的背压是什么?

erlang - 分布式erlang的安全性如何?

vim - Erlang的Vim设置

emacs - erlang源代码可以有行号吗?

erlang - 未使用 `exit_status` 选项时,open_port 不起作用

erlang - Erlang 内部列表的自定义串联