gpt4 book ai didi

scala - Scala中非案例类的模式匹配

转载 作者:行者123 更新时间:2023-12-04 09:18:27 25 4
gpt4 key购买 nike

假设我有一个普通的第三方类(即我不能修改它),其类定义如下:

class Price(var value: Int)

是否可以将此类的实例与某些模式匹配?

例如,我要实现功能:
def printPrice(price: Price) = {
// implementation here
}

...在所有其他情况下,为每个具有 price is {some value}pricevalue <= 9000打印 price is over 9000

例如,调用:
printPrice(new Price(10))
printPrice(new Price(9001))

应该打印:
price is 10
price is over 9000

如何使用模式匹配来实现 printPrice

最佳答案

您可以创建自定义提取器:

package external {
class Price(var value: Int)
}

object Price {
def unapply(price: Price): Option[Int] = Some(price.value)
}

def printPrice(price: Price) = price match {
case Price(v) if v <= 9000 => println(s"price is $v")
case _ => println("price is over 9000")
}

printPrice(new Price(10))
printPrice(new Price(9001))
对于案例类,编译器会自动生成它。我认为在您的情况下,提取器是过大的,但可能只是简化的示例。

关于scala - Scala中非案例类的模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20031975/

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