Elixir 标记操作符
2023-12-14 16:47 更新
变量在Elixir中可以被重新赋值:
iex> x = 1
1
iex> x = 2
2
当你想要对变量值进行模式匹配,而不是重新赋值时,就可以使用标记操作符:^
iex> x = 1
1
iex> ^x = 2
** (MatchError) no match of right hand side value: 2
iex> {y, ^x} = {2, 1}
{2, 1}
iex> y
2
iex> {y, ^x} = {2, 2}
** (MatchError) no match of right hand side value: {2, 2}
由于我们已经将1赋值给变量x,最后一个例子也可以写成:
iex> {y, 1} = {2, 2}
** (MatchError) no match of right hand side value: {2, 2}
在某些情况下,你并不关心模式中特定的值。可以使用下划线将那些值捆绑起来。例如,如果我们只看重列表头,那么可以将尾赋值给下划线:_
iex> [h | _] = [1, 2, 3]
[1, 2, 3]
iex> h
1
变量的特别之处在于它永远不可以被读取。试图读取它时会返回一个未指定变量的错误:_
iex> _
** (CompileError) iex:1: unbound variable _
尽管模式匹配使我们能够创建强大的结构体,它的用途依旧有限。例如,你不能够在匹配的左边调用函数:
iex> length([1, [2], 3]) = 3
** (CompileError) iex:1: illegal pattern
以上内容是否对您有帮助:
更多建议: