当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


erlang filter(Fun, Q1 :: queue(Item))用法及代码示例


filter(Fun, Q1 :: queue(Item)) -> Q2 :: queue(Item)
类型:
Fun = fun((Item) -> boolean() | [Item])

返回队列 Q2,它是对 Q1 中的所有项目调用 Fun(Item) 的结果。

如果 Fun(Item) 返回 true ,则将 Item 复制到结果队列。如果它返回false,则不复制Item。如果它返回一个列表,则将列表元素而不是 Item 插入到结果队列中。

示例 1:

1> Queue = queue:from_list([1,2,3,4,5]).
{[5,4,3],[1,2]}
2> Queue1 = queue:filter(fun (E) -> E > 2 end, Queue).
{[5],[3,4]}
3> queue:to_list(Queue1).
[3,4,5]

因此, Fun(Item) 返回 [Item] 在语义上等同于返回 true ,就像返回 [] 在语义上等同于返回 false 。但是返回一个列表比返回一个原子会产生更多的垃圾。

示例 2:

1> Queue = queue:from_list([1,2,3,4,5]).
{[5,4,3],[1,2]}
2> Queue1 = queue:filter(fun (E) -> [E, E+1] end, Queue).
{[6,5,5,4,4,3],[1,2,2,3]}
3> queue:to_list(Queue1).
[1,2,2,3,3,4,4,5,5,6]

相关用法


注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 filter(Fun, Q1 :: queue(Item)) -> Q2 :: queue(Item)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。