【发布时间】:2016-10-27 05:02:14
【问题描述】:
我不明白 Elixir 中等号的确切含义。 不清楚的是,它看起来像是赋值和模式匹配操作的混合体。
iex(1)> x=4
4
iex(2)> y=5
5
iex(3)> 3=y
** (MatchError) no match of right hand side value: 5
iex(3)> y=3
3
iex(4)> y=x
4
我知道在 Elixir 中,等号运算符意味着将 = 符号的左侧与右侧匹配。前两行对我来说很有意义。 x 和 y 是未绑定的变量,因此它们可以匹配任何东西。它们在匹配时被绑定。因此,我理解第三行。 5 不能匹配 3。
我开始失去理智的地方是为什么执行最后两行而没有给出相同的错误。看起来等号只是重新成为赋值运算符。
我试图在没有完全理解的情况下接受这种行为作为事实,并试图在语言学习方面走得更远。但是由于模式匹配是 Elixir 的核心机制之一,我一直处于锁定状态,觉得我应该回到这个最初的问题。在我完全理解“=”符号到底发生了什么以及逻辑是什么之前,我不会再进一步了。
【问题讨论】:
标签: functional-programming equals elixir elixir-iex