无法解析重载的方法“ startTimerWithFixedDelay”

问题描述

我不明白,为什么我在“ 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

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...