ets:matc-6ren">
gpt4 book ai didi

Erlang/ets : reset ets table after getting a "bad argument"?

转载 作者:行者123 更新时间:2023-12-02 05:21:40 26 4
gpt4 key购买 nike

我一直在学习如何使用 ets,但困扰我的一件事是,偶尔*,ets:match 会抛出一个错误的参数...而且,从他们开始,所有后续调用(甚至之前有效的调用)也会抛出一个错误参数:

> ets:match(Tid, { [$r | '$1'] }, 1).% this match works...% Then, at some point, this comes up:** exception error: bad argument     in function  ets:match/3        called as ets:match(24589,{[114|'$1']},1)% And from then on, matches stop working:> ets:match(Tid, { [$r | '$1'] }, 1).** exception error: bad argument     in function  ets:match/3        called as ets:match(24589,{[114|'$1']},1)

有没有办法“重置”ets 系统,以便我可以再次查询它(即从 shell)?

*:我无法重现这个问题……但当我尝试做“其他事情”时,这种情况经常发生。

最佳答案

虽然我不是 100% 确定,this thread似乎回答了你的问题。您似乎正在 shell 中观察到这种行为。如果是这样,则两个事实正在以令人困惑的方式相互作用:

  1. 一旦其所属进程终止,ets 表就会被删除。
  2. erlang shell 在收到异常时就会终止并以静默方式重新启动。

因此,当您收到第一个异常时,当前 shell 进程会终止,导致 ets 表被删除,然后会为您启动一个新的 shell 进程。现在,当您尝试另一个 ets:match 时,它会失败,因为该表不再存在。

关于Erlang/ets : reset ets table after getting a "bad argument"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1964990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com