微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

scala – 编译期间有关未处理类型类的警告

给出以下最小代码

package object MyPackage {
  case class Pimp(private val i: Int) extends AnyVal 
}

SBT(0.13.8)抱怨:

[warn] sbt-api: Unhandled type class scala.reflect.internal.Types$MethodType : ($this: myPackage.package.Pimp)Int

我的构建文件大致如下:

Project("sbtissue",file("sbtissue")).settings(scalaVersion := "2.11.6")

将源文件中的相关行更改为:

class Pimp(private val i: Int) extends AnyVal

要么:

case class Pimp(i: Int) extends AnyVal

编译时不会发出警告.
我该怎么做才能防止这种警告?

相关:https://groups.google.com/forum/#!topic/simple-build-tool/KWdg4HfYqMk

解决方法

我认为你找到了一个合法的边缘案例,如果可能是一个小利基.

我建议删除私有,因为它不太适合case类的想法,而且,如果存在生成的unapply,它也不会隐藏该值:

Welcome to Scala version 2.11.6 (Java HotSpot(TM) 64-Bit Server VM,Java 1.8.0_40).
Type in expressions to have them evaluated.
Type :help for more information.

scala> case class Pimp(private val i: Int) extends AnyVal
defined class Pimp

scala> val p1 = Pimp(1)
p1: Pimp = Pimp(1)

scala> p1.i
<console>:11: error: value i is not a member of Pimp
              p1.i
                 ^

scala> val Pimp(n) = p1
n: Int = 1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐