此问题在此处已有答案:
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())
有没有办法抑制这种情况,或者用某种方式编写代码来消除编译器错误?
1条答案
按热度按时间nvbavucw1#
发生这种情况是因为
Scheduler.schedule
方法返回一个Cancellable
示例,允许取消作业,但这段代码忽略了返回值。当编译器标志-Ywarn-value-discard
或-Wvalue-discard
被设置时,这会发出一个警告。如果编译器也设置了-Xfatal-warnings
或-Werror
,这些警告就会变成错误。一种解决方法是显式忽略返回值,而不是隐式忽略: