我想做一个需要匹配记录属性的选择性接收,但无论我尝试什么语法,我都会收到“非法模式”消息。
loop(State) ->
receive
{response, State#s.reference} -> do_something()
end.
这不可能吗?
答案 0 :(得分:21)
只是使用模式匹配的替代方法:
loop(#s{reference = Reference} = State) ->
receive
{response, Reference} ->
do_something()
end.
答案 1 :(得分:8)
loop(State) ->
receive
{response, R} when R =:= State#s.reference ->
do_something()
end.