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



以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号