2014-11-02 4 views
1

У меня есть таблица ets, которую вы можете себе представить, есть два столбца: «Ключ» и «Значение». Значение - целое число.Арифметические операции Erlang на ets: select result

Когда я попытался:

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

где Ans равна ожидаемой стоимости.

я получил ошибку:

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

Могу ли я не делать любые арифметические операции на ИТС: выберите возвращаемое значение?

ответ

1

в модуле эц спецификации: select(Tab, MatchSpec) -> [Match], значение reurn список матча. Если ваша спецификация соответствия определяет одно целое значение в качестве возврата, вы получите список целых чисел. В вашем случае, кажется, что этот список всегда будет иметь длину 1 элемент, если он должен быть случай, вы можете написать:

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

Но учтите, что этот код будет вылетать, если возвращаемый список пусто или имеет более 1 элемента.

1
ets:select(Table_name, MS) 

вернет результат в список.

Так вместо этого, следующий будет работать:

[Ans] = ets:select(Table_name, MS), 
Ans + 1. 
Смежные вопросы