scala case类私有应用方法(repl bug?)
发布时间:2020-12-16 19:12:28 所属栏目:安全 来源:网络整理
导读:在 Scala2.10.0 REPL中 Welcome to Scala version 2.10.0 (Java HotSpot(TM) 64-Bit Server VM,Java 1.7.0_13).Type in expressions to have them evaluated. Type :help for more information.scala case class A private(i:Int)defined class Ascala A(1)r
在
Scala2.10.0 REPL中
Welcome to Scala version 2.10.0 (Java HotSpot(TM) 64-Bit Server VM,Java 1.7.0_13). Type in expressions to have them evaluated. Type :help for more information. scala> case class A private(i:Int) defined class A scala> A(1) res0: A = A(1) 但如果编译 $scala -version Scala code runner version 2.10.0 -- Copyright 2002-2012,LAMP/EPFL $cat Main.scala package foo case class A private (i:Int) object Main extends App{ println(A(1)) } $scalac Main.scala Main.scala:6: error: constructor A in class A cannot be accessed in object Main println(A(1)) ^ one error found A.apply(1)是编译错误. 这个Scala2.10.0 REPL错误? FYI Scala2.9.2 REPL如下 Welcome to Scala version 2.9.2 (Java HotSpot(TM) 64-Bit Server VM,Java 1.7.0_13). Type in expressions to have them evaluated. Type :help for more information. scala> case class A private(i:Int) defined class A scala> A(1) <console>:10: error: constructor A in class A cannot be accessed in object $iw A(1) ^ 解决方法
这肯定看起来像REPL错误.
请注意,构造函数被正确标记为私有(换句话说,新的A(1)不会按预期编译),它只是工厂(A.apply)错误地公开. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |