无法从 ets table 中删除和 select

Unable to delete and select from an ets table

我在从 ETS 中检索和删除记录时遇到问题。

像这样插入后:

:ets.insert(
  :table_name,
  {id, location, [name, x, z]}
)

我无法像这样删除它们:

:ets.delete(:table_name, id) 

我也试过了,这 return 什么都没有。

:ets.match(:table_name, {id, location, '_'}) 

您随时可以通过 :ets.foldl/3

查看 :ets 的内容
ets = :ets.new(:table_name, [])

:ets.insert(ets, {1, 2, ["foo", 3, 4]})       
#⇒ true

:ets.foldl(&[&1|&2], [], ets)
#⇒ [{1, 2, ["foo", 3, 4]}]

:ets.delete/2 开箱即用:

:ets.delete ets, 1
#⇒ true

对于:ets.match/2应该使用原子 differs from 在如何表示它们)指定什么返回 return。

:ets.match(ets, {:_, :_, :''})  
#⇒ [[["foo", 3, 4]]]

:ets.match(ets, {1, :'', :''})
#⇒ [[2, ["foo", 3, 4]]]

如果你想在 ETS(和 DETS)周围使用 Elixir 包装器,你可以使用 pockets:

iex> Pockets.new(:table_name)
{:ok, :table_name}
iex> Pockets.put(:table_name, :id, "Foo")
:table_name
iex> Pockets.get(:table_name, :id)
"Foo"