在foo / bar / my_package / package.
scala中:
package foo.bar package object my_package { type SomeType = java.lang.String }
然后,在foo / bar / my_package / my_sub / MyClass.scala中
package foo.bar.my_package.my_sub class MyClass { var x: SomeType = _ }
这无法编译;找不到SomeType.如果我将MyClass.scala更改为
package foo.bar.my_package package my_sub class MyClass { var x: SomeType = _ }
一切正常.有什么不同!?!??!
(这是Scala 2.8.1)
解决方法
包装声明(如导入)使您可以访问其中的所有内容.所以,当你
package foo.bar.my_package
如果你这样做,你就拥有了所有可用的东西
import foo.bar.my_package._
此外,在单行上声明包意味着下面的所有内容都属于该包:
package foo.bar.my_package { package my_sub { class MyClass { var x: SomeType = _ } } }
(相当于:
package foo.bar.my_package package my_sub class MyClass { var x: SomeType = _ }
)
所以你可以看看在这种情况下foo.bar.my_package的内容应该在范围内.在另一种情况下,您只能获得foo.bar.my_package.my_sub的内容,其中不包含SomeType.