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

3qpi33ja  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(68)

此问题在此处已有答案

Suppress "discarded non-Unit value" warning(3个答案)
两年前就关门了。
我有一个Scala Play应用程序,我在类中调用Scala Akka调度程序,如下所示:

@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())

有没有办法抑制这种情况,或者用某种方式编写代码来消除编译器错误?

nvbavucw

nvbavucw1#

发生这种情况是因为Scheduler.schedule方法返回一个Cancellable示例,允许取消作业,但这段代码忽略了返回值。当编译器标志-Ywarn-value-discard-Wvalue-discard被设置时,这会发出一个警告。如果编译器也设置了-Xfatal-warnings-Werror,这些警告就会变成错误。
一种解决方法是显式忽略返回值,而不是隐式忽略:

val _ = actorSystem.scheduler.schedule(delay, interval)(poller())

相关问题