我可以使用具有默认/硬编码值的案例类吗

0 scala adt

例如,说我有一个密封的特征AnimalSounds,我有一个案例类“ Dog”和一个案例类“ Cat”,我希望这两个案例类的值默认为“ Woof”和“ Cat”

sealed trait AnimalSounds extends Product with Serializable
final case class Dog(sound: String = "woof") extends AnimalSounds
final case class Cat(sound: String = "meow") extends AnimalSounds

println(Dog.sound) 
Run Code Online (Sandbox Code Playgroud)

我收到错误消息“声音不是对象的成员”

Mar*_*lic 7

如果用“硬编码”表示常量考虑case objects如下

sealed trait AnimalSounds { val sound: String }
case object Dog extends AnimalSounds { val sound = "woof" }
case object Cat extends AnimalSounds { val sound = "meow" }

Dog.sound
Run Code Online (Sandbox Code Playgroud)

哪个输出

res0: String = woof
Run Code Online (Sandbox Code Playgroud)