【问题标题】:Erlang pattern not matching, but correct, what to do?Erlang 模式不匹配,但正确,怎么办?
【发布时间】:2014-08-09 04:40:54
【问题描述】:

我对 erlang 中的模式匹配有一个疯狂的问题:

我的接收块:

...
receive
    {set_val,Val} -> 
        log("got: ~p",[Val]);

    Any ->
        log("~p is an unknown command",[Any])
end.

我发送的内容:

...
{myreceive,myreceive@workstation} ! {set_val,100}

我的日志中出现的内容:

{set_val,100} is an unknown command

怎么会,第一个模式不匹配? (以及如何使其匹配:/)

【问题讨论】:

    标签: erlang pattern-matching


    【解决方案1】:

    它似乎按预期工作。

    1> spawn(fun() -> receive {set_val, Val} -> io:format("got: ~p~n", [Val]); Any -> io:format("~p is an unknown command",[Any]) end end) ! {set_val,100}.
    got: 100
    {set_val,100}
    

    作为Pascalmentioned,必须有变量Val已经绑定到与100不同的东西。

    【讨论】:

      【解决方案2】:

      我看到的唯一可能是 Val 已经在你的函数中绑定到一个不同于 100 的值。

      【讨论】:

      • 就是这样......很简单,但就是这样
      猜你喜欢
      • 2014-06-27
      • 2016-08-07
      • 2015-05-29
      • 2015-03-18
      • 2012-05-04
      • 2019-09-03
      • 2021-05-15
      • 1970-01-01
      相关资源
      最近更新 更多