Не удается разрешить перегруженный метод 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

person MJey    schedule 05.09.2020    source источник


Ответы (1)


Tick не является Receptionist.Listing, поэтому ни одна из версий не подходит.

person Tim    schedule 05.09.2020