在foo/bar/my_package/package.scala
:
package foo.bar
package object my_package {
type SomeType = java.lang.String
}
Run Code Online (Sandbox Code Playgroud)
然后,在 foo/bar/my_package/my_sub/MyClass.scala
package foo.bar.my_package.my_sub
class MyClass {
var x: SomeType = _
}
Run Code Online (Sandbox Code Playgroud)
这无法编译; SomeType
找不到.如果我换MyClass.scala
到
package foo.bar.my_package
package my_sub
class MyClass {
var x: SomeType = _
}
Run Code Online (Sandbox Code Playgroud)
一切正常.有什么不同!?!??!
(这是Scala 2.8.1)
包装声明(如导入)使您可以访问其中的所有内容.所以,当你
package foo.bar.my_package
Run Code Online (Sandbox Code Playgroud)
如果你这样做,你就拥有了所有可用的东西
import foo.bar.my_package._
Run Code Online (Sandbox Code Playgroud)
此外,在单行上声明包意味着下面的所有内容都属于该包:
package foo.bar.my_package {
package my_sub {
class MyClass { var x: SomeType = _ }
}
}
Run Code Online (Sandbox Code Playgroud)
(相当于:
package foo.bar.my_package
package my_sub
class MyClass { var x: SomeType = _ }
Run Code Online (Sandbox Code Playgroud)
)
所以你可以看到foo.bar.my_package
在这种情况下内容应该如何.在另一种情况下,您只有foo.bar.my_package.my_sub
可用的内容,但不包括SomeType
.
归档时间: |
|
查看次数: |
274 次 |
最近记录: |