我想做一个选择性接收,其中一个记录属性需要匹配,但无论我尝试什么语法,我得到一个"非法模式"消息.
loop(State) ->
receive
{response, State#s.reference} -> do_something()
end.
Run Code Online (Sandbox Code Playgroud)
这不可能吗?
Zed*_*Zed 21
只是一种使用模式匹配的替代方案:
loop(#s{reference = Reference} = State) ->
receive
{response, Reference} ->
do_something()
end.
Run Code Online (Sandbox Code Playgroud)
loop(State) ->
receive
{response, R} when R =:= State#s.reference ->
do_something()
end.
Run Code Online (Sandbox Code Playgroud)