加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 18:02:37 所属栏目:安全 来源:网络整理
导读:在foo / bar / my_package / package. scala中: package foo.barpackage object my_package { type SomeType = java.lang.String} 然后,在foo / bar / my_package / my_sub / MyClass.scala中 package foo.bar.my_package.my_subclass MyClass { var x: Som
在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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读