我有以下代码:
Check#tab_info{login_errors = 0},
{ok, PID};
Run Code Online (Sandbox Code Playgroud)
但是当我尝试编译它时会收到警告:
表达式的结果被忽略(通过将表达式赋值给_变量来抑制警告)
怎么了?我该如何解决?
谢谢.
好吧,编译器告诉你到底出了什么问题:)你创建了一个新#tab_info
记录,但绝不会将它绑定到任何变量.因此代码没有意义,编译器告诉你.Check
除非您返回变量,否则更改变量(或更正确地创建新变量)将不会产生任何影响.Check
不是一个全局变量,就像在命令式语言中一样.此外,将您收到的变量作为参数更改为函数,不会导致调用者看到变量的方式发生变化.
您希望将表达式绑定到某个变量,然后对其执行一些有意义的操作.
NewCheck = Check#tab_info{...}
{ok, Pid, NewCheck}
Run Code Online (Sandbox Code Playgroud)
作为旁注,如果你做了一个函数调用并且没有将返回值绑定到任何东西,编译器就不会抱怨因为函数可能有副作用,这可能是你首先调用函数的原因.