Scala包delcaration – 一种方式导致包对象可见,其他使得它不是?

前端之家收集整理的这篇文章主要介绍了Scala包delcaration – 一种方式导致包对象可见,其他使得它不是?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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.

猜你在找的Scala相关文章