我有一个ets表,你可以想象有两列,“Key”和Value。值是一个整数。
当我尝试时:
Ans = ets:select(Table_name, MS),
Ans + 1.
其中Ans等于预期值。
我收到了一个错误:
** exception error: an error occurred when evaluating an arithmetic expression
我可以不对ets进行任何算术运算:选择返回值吗?
答案 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.
但请注意,如果返回的列表为空或具有多个元素,则此代码将崩溃。