ets上的Erlang算术运算:选择结果

时间:2014-11-02 20:05:42

标签: erlang

我有一个ets表,你可以想象有两列,“Key”和Value。值是一个整数。

当我尝试时:

 Ans = ets:select(Table_name, MS),
 Ans + 1.

其中Ans等于预期值。

我收到了一个错误:

 ** exception error: an error occurred when evaluating an arithmetic expression

我可以不对ets进行任何算术运算:选择返回值吗?

2 个答案:

答案 0 :(得分:1)

 ets:select(Table_name, MS)

将在List中返回结果。

相反,以下内容可行:

 [Ans] = ets:select(Table_name, MS),
 Ans + 1.

答案 1 :(得分:1)

在ets模块规范:select(Tab, MatchSpec) -> [Match]中,reurn值是匹配列表。如果您的匹配规范将一个整数值定义为return,您将收到一个整数列表。在您的情况下,似乎此列表的长度始终为1个元素,如果必须,则可以写:

[Ans] = ets:select(Table_name, MS),
Ans + 1.

但请注意,如果返回的列表为空或具有多个元素,则此代码将崩溃。