案例对象扩展特征

时间:2017-06-22 12:28:41

标签: scala object

我们可以为类扩展特征提供参数,该特征与

等抽象方法同名
trait Trr{
   def m: String
}

case class Trrrr(m: String) extends Trr  //fine

此示例编译正常。但是我尝试用case对象做了类似的事情并且失败了:

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")

2 个答案:

答案 0 :(得分:2)

case object Unload extends Command { val name = "unld" }

对象没有参数,事情不会比以上更短......

答案 1 :(得分:1)

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

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

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

println(newTrr.m)

将打印出来:"示例"。