Elixir中的变量赋值

时间:2016-12-07 04:34:41

标签: erlang elixir

我对Elixir中的变量赋值有疑问。在Erlang中,这会引发no match of right hand side value

X = 4.
X = 2.

但是,Elixir似乎完全可以为变量赋值不止一次。我很困惑模式匹配在Elixir中是如何工作的。 Elixir如何区分模式匹配和变量赋值?根据我的理解,在Erlang中,X是一个未绑定的变量,所以它可以与任何东西匹配,对吗?但是一旦绑定,模式匹配仅在与X具有相同值时才有效。那么Elixir与Erlang没有共享相同的未绑定变量概念吗?

1 个答案:

答案 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中的小写字母开头。