从选项(lang.长)到长



将此标志添加到 scalacoptions 之后:

"-Xlint:option-implicit"

我不明白为什么我会得到这个以及如何解决它

错误:(47, 34( 隐式视图的可疑应用 (scala.Predef.Long2long(在Option.apply的论证中。val x: Long = Option[Long](timestamp()).getOrElse(1L)

代码如下所示

val x: Long = Option[Long](timestamp()).getOrElse(1L)

函数时间戳可以为 null 或返回 java Long

我能够使用以下代码复制消息:

$ scala -Xlint:option-implicit
Welcome to Scala 2.13.0 (OpenJDK 64-Bit Server VM, Java 1.8.0_222).
Type in expressions for evaluation. Or try :help.
scala> def timestamp(): java.lang.Long = new java.lang.Long("10")
scala> val x: Long = Option[Long](timestamp()).getOrElse(1L)
warning: Suspicious application of an implicit view (scala.Predef.Long2long) in the argument to Option.apply.

现在,您可以通过以下方式修复它。

val x: Long = Option(Long.unbox(timestamp())).getOrElse(1L)
// Or, supposing opt is of type Option[java.lang.Long]
val x: Long = opt.fold(ifEmpty = 1L)(Long.unbox)

可能你也打开了-Xfatal-warnings

尝试使用 https://github.com/ghik/silencer

val x: Long = (Option[Long](timestamp()): @silent).getOrElse(1L)

其实我无法复制。timestamp()的定义是什么?有了public static long timestamp() { return System.currentTimeMillis(); }我无法复制。

相关内容

  • 没有找到相关文章

最新更新