【问题标题】:Variable assignment in ElixirElixir 中的变量赋值
【发布时间】:2017-04-21 22:12:56
【问题描述】:

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

X = 4.
X = 2.

但是,在 Elixir 中多次为变量赋值似乎完全没问题。我对模式匹配在 Elixir 中的工作方式感到困惑。 Elixir 如何区分模式匹配和变量赋值?据我了解,在 Erlang 中,X 是一个未绑定的变量,因此它可以与任何东西匹配,对吧?但是一旦它被绑定,模式匹配只有在它与X 相同的值时才有效。那么 Elixir 与 Erlang 不共享未绑定变量的概念吗?

【问题讨论】:

    标签: erlang elixir


    【解决方案1】:

    是的,Elixir 在这方面没有遵循与 Erlang 相同的概念。 Elixir 试图让不太熟悉函数式编程的开发人员更容易使用,尤其是 Ruby 开发人员。根据Pattern matching 文档,您必须固定变量:

    iex(1)> x=4
    4
    iex(2)> ^x=2
    ** (MatchError) no match of right hand side value: 2
    

    另外,请注意,Elixir 中的变量必须以小写字母开头。

    【讨论】:

    猜你喜欢
    • 2016-09-21
    • 2020-02-21
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 2016-03-26
    相关资源
    最近更新 更多