English 中文(简体)
为什么在连接Elixir地图时没有相应的错误
原标题:Why there is no match error when matching Maps in Elixir
  • 时间:2023-12-26 02:48:07
  •  标签:
  • elixir

I am learning Elixir from offical docs.

I am bit confused about my comprehension of Elixir s pattern matching. Please have a look at below example.

[_] = [1,2,3]

专 员

(MatchError) no match of right hand side value: [1, 2, 3]
    (stdlib 5.0.2) erl_eval.erl:498: :erl_eval.expr/6
    iex:32: (file)

但是,为什么在法典以下产生这样的错误。 我感到,就像我所缺的。

 %{name: person_name} = %{name: "Fred", favorite_color: "Taupe"}

专 员

%{name: "Fred", favorite_color: "Taupe"}

我没有做任何事情。 我请聊天。

问题回答

在处理les时,必须提供适合整个教学结构的模式。 你们可以把强调——作为一个整体,但它需要涵盖所有要素。 在处理清单时,你要么与[a、b、c]=[1、2、3]等所有要素相匹配,要么与头和尾一道使用[<> = [1、2、3]。 然而,用地图显示,你具有与一个或多个钥匙相匹配的灵活性,从而可以采用诸如 %{a:b} = %{a:foo, b:bar}。

这些数据结构的语义差异是有意义的。 指导性规则确保只有在两个标记都有相同数目的内容时才能进行匹配。 名单也有类似的限制,但由于进入头部是共同作业,所以先是[......”。 而另一方面,地图可以根据特定钥匙进行匹配,使要素数量变得无关紧要。 只要双方都含有同样的关键和选择价值模式,它就认为是成功的。





相关问题
Elixir app exits instead of running forever

I have coded simple elixir app, which starts websocket client and listens for incoming messages. I was expecting it to run forever. But the app exits as soon as I run it using mix app.start. Here is ...

热门标签