gpt4 book ai didi

父类中的Scala继承默认参数

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

我有一个抽象类,其参数为默认值。
我不想在所有可能的实现的构造函数中重用默认值。

abstract class Place(val place: String = "World")
class Message(val message: String = "Hello", p: String) extends Place(p) {
override def toString = s"$message $place"
}

我想得到什么
new Message("Hi", "Universe") = "Hi Universe" // Ok
new Message("Hi") = "Hi World" // Doesn't work, second parameter is required
new Message() = "Hello World" // Doesn't work, second parameter is required

我考虑过使用辅助构造函数,省略第二个参数,但这无济于事,因为您不能在主构造函数之外调用 super 构造函数。

我想知道怎么做,或者为什么不可能。我不是在寻找解决方法,例如不使用继承。

最佳答案

您可以以更优雅的方式重用默认值:

object Place {
val defaultPlace = "World"
}
abstract class Place(val place: String = Place.defaultPlace)
class Message(val message: String = "Hello", p: String = Place.defaultPlace) extends Place(p) {
override def toString = s"$message $place"
}

关于父类中的Scala继承默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30326160/

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