我在从ETS检索和删除记录时遇到问题。插入后,它们像:
:ets.insert( :table_name, {id, location, [name, x, z]} )
我无法像这样删除它们:
:ets.delete(:table_name, id)
我也试过了,但没有任何反馈。
:ets.match(:table_name, {id, location, '_'})
yfwxisqw1#
如果您想在ETS(和DETS)周围使用Elixir Package 器,可以使用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"
8yoxcaq72#
您始终可以使用:ets.foldl/3查看:ets的内容
: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/2
:ets.delete ets, 1 #⇒ true
对于:ets.match/2,应该使用 atoms(elixir与erlang在如何表示它们方面不同)* 和 * 指定要返回的内容。
:ets.match/2
:ets.match(ets, {:_, :_, :'$1'}) #⇒ [[["foo", 3, 4]]] :ets.match(ets, {1, :'$1', :'$2'}) #⇒ [[2, ["foo", 3, 4]]]
2条答案
按热度按时间yfwxisqw1#
如果您想在ETS(和DETS)周围使用Elixir Package 器,可以使用pockets:
8yoxcaq72#
您始终可以使用
:ets.foldl/3
查看:ets
的内容:ets.delete/2
开箱即用:对于
:ets.match/2
,应该使用 atoms(elixir与erlang在如何表示它们方面不同)* 和 * 指定要返回的内容。