gpt4 book ai didi

scala - 如何使用带构造函数的抽象类扩展 Scala 中的对象?

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

如何使用具有构造函数的抽象类扩展 Scala 中的对象,并且该对象的 apply 方法返回该对象作为抽象的子类型?

例如:

abstract class AbstractResource(amount:Int) {
val amount:Int
def getAmount = amount
}


case object Wood extends AbstractResource{
def apply(amount: Int) = {
// something that returns the subtype
}
}

我认为一个好的解决方案是:

abstract class AbstractResource {
val amount: Int = 0

def getAmount = amount
}


case object Wood extends AbstractResource {
def apply(quantity: Int) = {
new AbstractResource {
override val amount = quantity
}
}
}

但我的问题是我无法编辑 AbstractResource

最佳答案

我不知道为什么Wood应该扩展AbstractResource,但这有效:

class AbstractResource(val amount:Int) {
def getAmount = amount
}

case object Wood extends AbstractResource(0) {
def apply(amount: Int) = {
new AbstractResource(amount)
}
}

关于scala - 如何使用带构造函数的抽象类扩展 Scala 中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18097753/

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