使用Akka时丢弃非单位值错误

问题描述 投票:0回答:1

我有Scala Play应用程序,并且正在像这样的类中调用Scala Akka Scheduler:

@Singleton
class Foo @Inject() (
  actorSystem: ActorSystem,
)(implicit
  executionContext: ExecutionContext,
 ) extends Logging {

  actorSystem.scheduler.schedule(delay, interval)(poller())

  def poller(): Unit ...
}

但是我收到这样的编译器警告

discarded non-Unit value
[error]   actorSystem.scheduler.schedule(delay, interval)(poller())

是否有某种方法可以消除此错误或以某种方式对此进行编码以消除编译器错误?

scala playframework akka
1个回答
0
投票

发生这种情况是因为Scheduler.schedule方法返回一个Scheduler.schedule实例以允许取消作业,但是此代码忽略了返回值。设置编译器标志CancellableCancellable时,将发出警告。如果编译器还设置了-Ywarn-value-discard-Wvalue-discard,则这些警告将变为错误。

一种解决方法是显式忽略返回值,而不是隐式:

-Xfatal-warnings
© www.soinside.com 2019 - 2024. All rights reserved.