这个gen_server.erl代码的目的是什么?

Mic*_*rry 6 erlang

unregister_name({local,Name}) ->
    _ = (catch unregister(Name));
unregister_name({global,Name}) ->
    _ = global:unregister_name(Name);
unregister_name({via, Mod, Name}) ->
    _ = Mod:unregister_name(Name);
unregister_name(Pid) when is_pid(Pid) ->
    Pid.
Run Code Online (Sandbox Code Playgroud)

这是来自gen_server.erl.如果_总是匹配并且匹配总是计算到右侧表达式,那么_ = expression()这里的行是什么?

Ste*_*ski 7

通常,_ = ...匹配用于在使用其选项时使有关不匹配函数返回值的透析器警告静音-Wunmatched_returns.正如文档所述:

-Wunmatched_returns
    Include warnings for function calls which ignore a structured return value or
    do not match against one of many possible return value(s).
Run Code Online (Sandbox Code Playgroud)

通过将返回值与_"不关心"变量显式匹配,您可以使用此有用的透析器选项,而无需查看您不关心的返回值的警告.