我刚注意到,当我有
时case class Foo(bar : String)(val baz : String)
如果在不同的包中引用Foo,我似乎无法访问baz。有没有什么可以做到这一点,或者我只需要让步并添加一个访问者?
答案 0 :(得分:1)
这就是REPL的用途!
scala> case class Foo(bar: String)(val baz: String)
defined class Foo
scala> val foo1 = Foo("goo")("snoo")
foo1: Foo = Foo(goo)
scala> foo1.baz
res0: String = snoo
但请注意,baz
此处不参与copy
equals
,hashCode
或toString
(如上所示),因此请使用其他案例小心构造函数参数列表。
此外,这不是“辅助构造函数”。
<强>证明强>
package here {
case class Foo(bar: String)(val baz: String)
}
package there {
import here._
object SnooSnoo {
def main(args: Array[String]): Unit = {
val foo2 = Foo("flew")("too")
println(s"foo2=$foo2; foo2.baz=${foo2.baz}")
}
}
}
% sbt
> run
[info] Compiling 1 Scala source to /Users/rschulz/Projects/scribble/target/scala-2.10/classes...
[info] foo2=Foo(flew); foo2.baz=too
[success] Total time: 5 s, completed Jan 4, 2014 2:07:14 PM
答案 1 :(得分:0)
实际上,看起来这可能只是IntelliJ Scala插件中的一个错误。