Scala 有没有一种方法可以让一个特质得到一个隐含的显式
我正在尝试实现一种特性,它覆盖参与者以截获特定的消息类型,如下所示:Scala 有没有一种方法可以让一个特质得到一个隐含的显式,scala,akka,Scala,Akka,我正在尝试实现一种特性,它覆盖参与者以截获特定的消息类型,如下所示: trait MyTrait[M] extends Actor { abstract override def receive = { case msg: M => // Do Something super.receive(msg) } } 这给了我编译器警告: abstract type pa
trait MyTrait[M] extends Actor {
abstract override def receive = {
case msg: M =>
// Do Something
super.receive(msg)
}
}
这给了我编译器警告:
abstract type pattern M is unchecked since it is eliminated by erasure
我不能传递隐式类清单,因为它是一个特性而不是一个类。在仍然使用特征的情况下,有没有办法实现上述目标?您可以在特征中添加一个抽象定义,并在以后实施:
scala> trait T[A] {
implicit def ev: Manifest[A]
def r: Any => Int = { case a: A => 1 case _ => 0}
}
defined trait T
scala> class X(implicit val ev: Manifest[String]) extends T[String]
defined class X
scala> new X().r("")
res0: Int = 1
scala> new X().r(5)
res1: Int = 0
如果想要匿名实例化它,给它一个以前定义的类?所以在上面的例子中,我有一个类SomeActor扩展了Actor。我想用trait作为mixin创建一个对象:“val x=newsomeactor with MyTrait[String]”那么,你可以用MyTrait[String]{implicit val ev:Manifest[String]=Manifest[String]}