【问题标题】:Cannot resolve overloaded method 'startTimerWithFixedDelay'无法解析重载方法“startTimerWithFixedDelay”
【发布时间】:2020-09-05 08:34:49
【问题描述】:

我不明白,为什么我在“timers.startTimerWithFixedDelay”中得到一个重载错误。我添加了 3 个参数以确保采用正确的方法,但他似乎也发现只有 2 个参数的方法非常有吸引力。

package main
import akka.actor.typed.{ActorSystem, Behavior}
import akka.actor.typed.receptionist.Receptionist
import akka.actor.typed.scaladsl.Behaviors
import scala.concurrent.duration.{Duration, FiniteDuration, MINUTES}

object Guardian {
  case object Tick

  val start: Behavior[Nothing] =
    Behaviors.setup[Receptionist.Listing] { context =>

      Behaviors.withTimers { timers =>
        timers.startTimerWithFixedDelay(Tick, Tick, FiniteDuration(Duration("3 seconds").toSeconds, MINUTES))
        Behaviors.same
      }

    }.narrow
}

object Application extends App {
  ActorSystem[Nothing](Guardian.start, "system")
}

在 TimerScheduler.scala 内部,他是否无法在两者之间做出决定:

def startTimerWithFixedDelay(msg: T, delay: FiniteDuration): Unit
def startTimerWithFixedDelay(key: Any, msg: T, delay: FiniteDuration): Unit

他为什么不带3参数?

编译器错误信息:

[error] ... overloaded method startTimerWithFixedDelay with alternatives:
[error]   (msg: akka.actor.typed.receptionist.Receptionist.Listing,delay: scala.concurrent.duration.FiniteDuration)Unit <and>
[error]   (key: Any,msg: akka.actor.typed.receptionist.Receptionist.Listing,delay: scala.concurrent.duration.FiniteDuration)Unit

【问题讨论】:

    标签: scala akka akka-typed


    【解决方案1】:

    Tick 不是 Receptionist.Listing,所以两个版本都不匹配。

    【讨论】:

      猜你喜欢
      • 2019-09-17
      • 2021-03-01
      • 1970-01-01
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      • 2011-04-10
      相关资源
      最近更新 更多