Scala 我如何混合类型演员和非类型演员?

Scala 我如何混合类型演员和非类型演员?,scala,akka,actor,akka-http,akka-typed,Scala,Akka,Actor,Akka Http,Akka Typed,我如何混合类型演员和非类型演员?据我所知,当我创建ActorSystem的实例时,我必须指定主参与者,如下所示 val system: akka.typed.ActorSystem[Start] = akka.typed.ActorSystem("main", Props(mainBehaviour)) implicit val system = ActorSystem() implicit val executor = system.dispatcher implicit val mater

我如何混合类型演员和非类型演员?据我所知,当我创建
ActorSystem
的实例时,我必须指定主参与者,如下所示

val system: akka.typed.ActorSystem[Start] = akka.typed.ActorSystem("main", Props(mainBehaviour))
implicit val system = ActorSystem()
implicit val executor = system.dispatcher
implicit val materializer = ActorMaterializer()
// etc...
另一方面,我使用akka http,其初始化如下

val system: akka.typed.ActorSystem[Start] = akka.typed.ActorSystem("main", Props(mainBehaviour))
implicit val system = ActorSystem()
implicit val executor = system.dispatcher
implicit val materializer = ActorMaterializer()
// etc...
我发现我可以通过调用

object ActorSystem {
  def apply(untyped: akka.actor.ActorSystem): ActorSystem[Nothing] = new Wrapper(untyped.asInstanceOf[ExtendedActorSystem])
}
所以假设我这么做了

val typeSystem = akka.typed.ActorSystem(untypedSystem)
如何从
typeSystem
创建我的第一个类型演员?没有键入的
ActorContext
可以调用其
actorOf

我读过的关于这个主题的其他材料有


很好,这在目前还不太可能:您需要做的是创建类型化ActorSystem,然后访问底层非类型化ActorSystem,以启动HTTP扩展,但是
底层
方法是
私有[akka]
。您可以通过在Akka名称空间中的项目中放置一些帮助程序代码来访问它,也可以通过另一种方式:

implicit val untyped = akka.actor.ActorSystem("main")
import untyped.dispatcher
implicit val mat = ActorMaterializer()

import akka.typed.Ops._
val typedRef = untyped.spawn(Props(mainBehaviour))
val typedSys = ActorSystem(untyped)

Http().bind(...) // and send things to typed

谢谢!这是可行的,但由于名字冲突,整个事情看起来很不友好。我必须编写
AskPattern.Askable(typedRef)。?(开始)
。然后导入出现问题,请在github上打开一个问题,以便我们能够正确修复它。