Erlang记录表达式忽略了警告

时间:2011-04-22 05:54:33

标签: erlang

我有以下代码:

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

但是当我尝试编译它时会收到警告:

忽略表达式的结果(通过将表达式赋值给_变量来抑制警告)

怎么了?我该如何解决?

谢谢。

1 个答案:

答案 0 :(得分:9)

好吧,编译器告诉你到底出了什么问题:)你创建了一个新的#tab_info记录,但绝不会将它绑定到任何变量。因此代码没有意义,编译器告诉你。更改Check变量(或更准确地说,创建一个新变量)将不起作用,除非您将其返回。 Check不是全局变量,就像在命令式语言中一样。此外,将您收到的变量作为参数更改为函数,不会导致调用者看到变量的方式发生变化。

您希望将表达式绑定到某个变量,然后使用它执行一些有意义的操作。

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

作为旁注,如果你做了一个函数调用而没有将返回值绑定到任何东西,编译器就不会抱怨因为函数可能有副作用,这可能是你调用函数的原因。第一名。