gpt4 book ai didi

scala - Scala 中的 unapply 方法是什么?

转载 作者:行者123 更新时间:2023-12-01 23:54:01 26 4
gpt4 key购买 nike

什么是unapply方法是Scala?它是如何工作的?

我知道 OCaml 等其他语言中的模式匹配,通常你几乎无法控制它。 Scala 在提供方面是独一无二的吗unapply方法,或者是否有其他语言提供控制模式匹配的机制?

最佳答案

在斯卡拉 unapply也称为提取器方法,例如考虑这个

scala> object SomeInteger {
|
| def apply(someInt: Int): Int = someInt
|
| def unapply(someInt: Int): Option[Int] = if (someInt > 100) Some(someInt) else None
| }
defined module SomeInteger

scala> val someInteger1 = SomeInteger(200)
someInteger1: Int = 200

scala> val someInteger2 = SomeInteger(0)
someInteger2: Int = 0

scala> someInteger1 match {
| case SomeInteger(n) => println(n)
| }
200

scala> someInteger2 match {
| case SomeInteger(n) => println(n)
| case _ => println("default")
| }
default

如您所见,第二个匹配打印 default因为 SomeInteger的unapply方法返回 None而不是 SomeInteger(n) .

可以很容易地在列表中找到提取器的其他示例,例如:
List(1,2,3,4) match { 
case head :: tail => doSomething()
case first :: second :: tail => doSomethingElse
case Nil => endOfList()
}

这是可能的,因为 unapply方法被定义。

关于scala - Scala 中的 unapply 方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25099381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com