给出以下最小代码:
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 举报,一经查实,本站将立刻删除。