Proposal: ets:select_take?
Fred Youhanaie
fly@REDACTED
Wed Jul 15 14:15:54 CEST 2020
Hi Borja
Would iterating over the list of objects with ets:delete_object/2 help?
for example:
lists:foreach(fun (Obj) -> ets:delete_object(table, Obj) end, Objects)
Cheers,
Fred
On 15/07/2020 11:46, Borja de Regil wrote:
> Hi everyone, it’s been a couple of times already that I’ve wished for something like ets:take/2 that accepts a match specification like ets:select or ets:match.
>
> Currently, ets:select_delete returns the number of deleted items, but it’s possible you want to first to something with those items _before_ deleting them. In this case, one has to resort to something like the following:
>
> Objects = ets:select(table, [{ MatchSpec, MatchCond, MatchReturn }]),
> %% do something with objects
> ets:select_delete(table, [{ MatchSpec, MatchCond, [true] }]).
>
> It seems wasteful to perform two scans on the table in this case. But perhaps this pattern is not common enough in the wild?
>
> Looking forward to hear your opinion!
>
> Cheers,
> Borja
>
More information about the erlang-questions
mailing list