我对Elixir中的变量赋值有疑问。在Erlang中,这会引发no match of right hand side value
:
X = 4.
X = 2.
但是,Elixir似乎完全可以为变量赋值不止一次。我很困惑模式匹配在Elixir中是如何工作的。 Elixir如何区分模式匹配和变量赋值?根据我的理解,在Erlang中,X
是一个未绑定的变量,所以它可以与任何东西匹配,对吗?但是一旦绑定,模式匹配仅在与X
具有相同值时才有效。那么Elixir与Erlang没有共享相同的未绑定变量概念吗?
答案 0 :(得分:13)
是的,在这方面,Elixir并没有遵循与Erlang相同的概念。 Elixir试图让那些不熟悉函数式编程的开发人员更容易访问,特别是Ruby开发人员。根据{{3}}文档,您必须固定变量:
iex(1)> x=4
4
iex(2)> ^x=2
** (MatchError) no match of right hand side value: 2
另外,请注意,变量必须以Elixir中的小写字母开头。