在Elixir中,_
符号用作通配符,用于匹配任何单个值,而不关心该值是什么。这可以被视为“无模式”匹配,因为它不指定任何特定的模式。以下是如何在Elixir中使用_
进行匹配的示例:
iex> [head | tail] = [1, 2, 3]
[1, 2, 3]
iex> head
1
iex> tail
[2, 3]
iex> [_, second, _] = [1, 2, 3]
[1, 2, 3]
iex> second
2
在上面的例子中,_
被用来匹配列表中的第一个和第三个元素,但我们并不关心它们的值。我们只关心第二个元素,它被绑定到变量second
上。
如果你想要匹配任意数量的值,你可以使用...
(省略号)来表示可变数量的元素,这在模式匹配中称为“捕获”:
iex> [first, rest @ _] = [1, 2, 3, 4]
[1, 2, 3, 4]
iex> first
1
iex> rest
[2, 3, 4]
在这个例子中,rest @ _
匹配了从第二个元素开始的所有剩余元素,并将它们绑定到rest
变量上。_
在这里并没有实际的作用,因为rest
已经捕获了所有的剩余元素。
如果你想要匹配任何值但不做任何操作,你可以简单地使用_
:
iex> [_, _, _, last] = [1, 2, 3, 4]
[1, 2, 3, 4]
iex> last
4
在这个例子中,前三个元素被_
匹配,但我们只关心最后一个元素,它被绑定到last
变量上。
总之,_
在Elixir中用于匹配任何单个值,而不关心该值是什么,这可以被视为一种简单的“无模式”匹配方式。
云+社区技术沙龙[第14期]
Hello Serverless 来了
云+社区技术沙龙[第21期]
【产研荟】直播系列
云+社区技术沙龙[第8期]
Elastic 中国开发者大会
serverless days
领取专属 10元无门槛券
手把手带您无忧上云