gpt4 book ai didi

Scala 将子类与参数匹配

转载 作者:行者123 更新时间:2023-12-01 10:32:30 24 4
gpt4 key购买 nike

我有一个父抽象类P:

abstract class P {
def isEmpty: Boolean
}

然后我有 2 个子类 EmptyNonEmpty:

class Empty extends P {
def isEmpty: Boolean = true
}

NonEmpty中,我需要定义一个函数union如下:

class NonEmpty(name: String) extends P {
def isEmpty: Boolean = false
def union(that: P): Unit = {
that match {
case e: Empty => print("empty")
case n: NonEmpty => print("NonEmpty:" + n.name)
}
}
}

但是,我得到一个错误:

14: error: value name is not a member of NonEmpty
case n: NonEmpty => println("NonEmpty:" + n.name)
^

怎么会?

最佳答案

简单地使 name 成为该类的公共(public)(即可见)值成员。

class NonEmpty(val name: String) extends P { ...

或者您可以将它变成一个案例类。这样参数自动公开,模式匹配更简洁一些。

case NonEmpty(n) => print("NonEmpty:" + n)

关于Scala 将子类与参数匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41132942/

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