案例对象扩展性状



我们可以向类别提供参数,该类别以与

的抽象方法相同的名称扩展特征
trait Trr{
   def m: String
}
case class Trrrr(m: String) extends Trr  //fine

此示例可以很好地编译。但是我试图用案例对象做类似的事情,但失败了:

trait Command{
  def name: String
}
case object Unload("unld") extends Command //compile error

在离开 Command特征时,有没有办法简洁地编写这篇文章,不是带有参数的抽象类?我的意思是不是那样:

case object Unload extends Command {
  override def name: String = "unld"
}

abstract class Command(name: String)
case object Unload extends Command("unld")
case object Unload extends Command { val name = "unld" }

对象没有参数,事情不会比上述...

短短。

您可以像这样直接实例化特质:

val newTrr = new Trr { val m = "example" }

此时,您可以像任何类实例一样使用NewTrr值...

println(newTrr.m)

将打印出来:"示例"。

最新更新