Erlang запись выражения игнорируется предупреждение - PullRequest
1 голос
/ 22 апреля 2011

У меня есть следующий код:

    Check#tab_info{login_errors = 0},
    {ok, PID};

Но я получаю предупреждение, когда пытаюсь его скомпилировать:

результат выражения игнорируется (подавить предупреждение, присвоив выражение переменной _)

Что не так? Как я могу это исправить?

Спасибо.

1 Ответ

9 голосов
/ 22 апреля 2011

Ну, компилятор говорит вам, что именно не так :) Вы создаете новую запись #tab_info, но никогда не привязываете ее к какой-либо переменной.Поэтому код не имеет смысла, и компилятор говорит вам об этом.Изменение переменной Check (или, вернее, создание новой) не даст никакого эффекта, если вы не вернете ее.Check не является глобальной переменной, как это может быть в императивных языках.Кроме того, изменение переменной, которую вы получаете в качестве аргумента функции, не приведет к изменению того, как вызывающая сторона видит переменную.

Вы хотите связать выражение с некоторой переменной, а затем сделать с ней что-то осмысленное.

NewCheck = Check#tab_info{...}
{ok, Pid, NewCheck}

В качестве дополнительного примечания: если вместо этого вы сделали вызов функции и ни к чему не привязали возвращаемое значение, компилятор не будет жаловаться, так как функция может иметь побочные эффекты, и это может бытьпричина, по которой вы вызвали функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...