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