我是Elixir新手,正在官网学习。
为什么输出等于{2,1}?
iex> x = 1
iex> {x, ^x} = {2, 1}
{2, 1}
当第二个方程中 x 与 2 匹配并且 ^x = 1 不应该被允许时,它不会给出匹配错误吗?
我尝试在网上搜索但没有找到满意的答案。
在 Elixir 中,^x 将 x 与其之前绑定的变量匹配。这一行:
{x, ^x}
表示“匹配一个元组,其中第一个元素可以是任何值并将其分配给 x,第二个元素必须等于 x 的当前值。”
您将 x 绑定到 1,但随后在此语句中将其重新分配为 2:
{x, ^x} = {2, 1}
因为 x 位于括号的左侧,2 也是如此。
然后,使用 pin 运算符(pin 运算符选择 x 的先前值,即 1),对表达式的后半部分进行计算,得出 ^x 为 1。这就是它打印的原因
{2, 1}