[英]Unable to delete and select from an ets table
我在从 ETS 检索和删除记录时遇到问题。
像这样插入它们后:
:ets.insert(
:table_name,
{id, location, [name, x, z]}
)
我无法像这样删除它们:
:ets.delete(:table_name, id)
我也试过了,这并没有返回任何东西。
:ets.match(:table_name, {id, location, '_'})
如果你想在 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"
您始终可以使用: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
,应该使用原子( elixir与erlang在如何表示它们方面不同)并指定要返回的内容。
:ets.match(ets, {:_, :_, :'$1'})
#⇒ [[["foo", 3, 4]]]
:ets.match(ets, {1, :'$1', :'$2'})
#⇒ [[2, ["foo", 3, 4]]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.