Scala文档讨论AnyVal。
在When Allocation Is Necessary
部分,提到:
case class P(val i: Int) extends AnyVal
val p = new P(3)
p match { // new P instantiated here
case P(3) => println("Matched 3")
case P(x) => println("Not 3")
}
是否有可能在编译时知道AnyVal
是否需要分配,即放在堆而不是堆栈上?
此外,我想编写上面的代码,然后在编译时收到p match {
导致分配的警告。
据我所知,分配违背了AnyVal
的目的。