【发布时间】:2013-12-06 22:16:32
【问题描述】:
我对 Scala/Akka 堆栈完全陌生,所以如果这个问题听起来很原始,请原谅。我正在使用文档 (http://doc.akka.io/docs/akka/snapshot/scala/actors.html#The_Actor_DSL) 中的“The Actor DSL”示例,并且正在努力弄清楚如何在其中获取记录器以帮助我理解事件序列。本章前面的示例展示了如何在 Actor 的定义中获取记录器,只需...
import akka.event.Logging
...
val log = Logging(context.system, this)
但是当我在 REPL 中尝试这个时,我得到的只是“:15:错误:递归值日志需要类型”。这几乎是我的 REPL 的状态。问题出在底层……
bobk-mbp:akka_hw_scala bobk$ sbt
> set scalacOptions in (Compile, console) += "-Yrepl-sync"
> console
scala> import akka.actor.ActorDSL._
import akka.actor.ActorDSL._
scala> import akka.actor.ActorSystem
ActorSystem ActorSystemImpl
scala> import akka.actor.ActorSystem
import akka.actor.ActorSystem
scala> implicit val system = ActorSystem("demo")
system: akka.actor.ActorSystem = akka://demo
scala> import akka.event.Logging
import akka.event.Logging
scala> :paste
// Entering paste mode (ctrl-D to finish)
val a = actor(
new Act {
val log = Logging( context.system, this )
become {
case "info" => log.info( "A" )
case "switch" => becomeStacked {
case "info" => log.info( "B" )
case "switch" => unbecome()
}
case "lobotomize" => unbecome()
}
}
)
// Exiting paste mode, now interpreting.
<console>:15: error: recursive value log needs type
val log = Logging( context.system, this )
^
scala>
如何使记录器可用于 REPL 中的 ActorDSL 定义的 Actor?
【问题讨论】: