有
trait
,如下所示
trait MyTrait
{
val country: String,
val state: String,
val commune: String = "nothing"
}
现在实施
MyTrait
case class ImplementTrait(
country:String,
state: String,
//commune, how to provide commune's default value if commune is not provided while initialising ImplementTrait
) extends MyTrait
例如
ImplementTrait(country, state)
,应该可以工作,因为它将采用 commune
默认值
ImplementTrait(country, state, commune)
,也应该有效,因为 commune
值现在存在
有什么建议吗?
我不认为你可以轻松地自动做一些事情,但如果你可能想考虑沿着这些思路做的事情:
object MyTrait {
val DefaultCommune = "nothing"
}
trait MyTrait {
def country: String
def state: String
def commune: String
}
final case class ImplementTrait(
country: String,
state: String,
commune: String = MyTrait.DefaultCommune
) extends MyTrait
assert(ImplementTrait("Germany", "Bayern").commune == "nothing")
assert(ImplementTrait("Mexico", "Yucatan", "Merida").commune == "Merida")
您可以在 Scastie 上使用此代码。
请注意我对您最初的建议所做的一些更改,作为进一步的反馈: