我们可以为类扩展特征提供参数,该特征与
等抽象方法同名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")
答案 0 :(得分:2)
case object Unload extends Command { val name = "unld" }
对象没有参数,事情不会比以上更短......
答案 1 :(得分:1)
您可以像这样直接实例化特征:
val newTrr = new Trr { val m = "example" }
此时您可以像任何类实例一样使用newTrr值...
println(newTrr.m)
将打印出来:"示例"。