【问题标题】:Discarded non-Unit value Error When Using Akka [duplicate]使用 Akka 时丢弃的非单位值错误 [重复]
【发布时间】:2020-10-06 11:47:00
【问题描述】:

我有 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())

有没有办法抑制这个或以某种方式编码这个以消除编译器错误?

【问题讨论】:

    标签: scala playframework akka


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      • 2018-03-17
      • 2013-09-14
      • 1970-01-01
      • 1970-01-01
      • 2016-03-15
      相关资源
      最近更新 更多