Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Case对象扩展特性_Scala_Object - Fatal编程技术网

Scala Case对象扩展特性

Scala Case对象扩展特性,scala,object,Scala,Object,我们可以为类扩展trait提供参数,该类扩展trait的名称与抽象方法相同,如 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

我们可以为类扩展trait提供参数,该类扩展trait的名称与抽象方法相同,如

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
有没有一种方法可以在保留
命令
一个特征,而不是一个带有参数的抽象类的情况下简洁地编写此命令?我的意思不是这样的:

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


对象没有参数,事情不会比上面的短…

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

val newTrr = new Trr { val m = "example" }
此时,您可以像使用任何类实例一样使用newTrr值

println(newTrr.m)

将打印出:“示例”。

没有其他更简洁的方法。
val newTrr = new Trr { val m = "example" }
println(newTrr.m)