我有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())
是否有某种方法可以消除此错误或以某种方式对此进行编码以消除编译器错误?
发生这种情况是因为Scheduler.schedule
方法返回一个Scheduler.schedule
实例以允许取消作业,但是此代码忽略了返回值。设置编译器标志Cancellable
或Cancellable
时,将发出警告。如果编译器还设置了-Ywarn-value-discard
或-Wvalue-discard
,则这些警告将变为错误。
一种解决方法是显式忽略返回值,而不是隐式:
-Xfatal-warnings