代码之家  ›  专栏  ›  技术社区  ›  lindelof

我是否需要将singleton对象的成员导入到scala中它的伴生类中?

  •  17
  • lindelof  · 技术社区  · 14 年前

    这本好书说:

    类及其伴生对象可以访问彼此的私有成员。

    也许很天真,我认为这意味着一个类不需要显式地从它的伴生对象导入成员。也就是说,以下内容可以工作:

    object Foo {
      def bar = 4
     }
    
    class Foo {
     def foo = bar
    }
    

    嗯,你读到这本书的原因是它没有。所以我真的需要申报这样的东西吗:

    class Foo {
      import Foo._
    
      def foo = bar
    }
    
    3 回复  |  直到 14 年前
        1
  •  17
  •   Daniel C. Sobral    14 年前

    是的,就像你说的那样。有访问权,也有范围——伴生类/对象拥有的是访问权,而不是范围。

    这就像宣布一些公共的和私有的东西——它不把这些成员带到每个人的范围内,只给他们访问它的权限。

        2
  •  4
  •   Alexey Romanov    14 年前

    “可以访问私人成员”是指以下工作:

    object Foo {
      private def bar = 4
    }
    
    class Foo {
      def foo = Foo.bar
    }
    
        3
  •  3
  •   Randall Schulz    14 年前

    是的(我想要我的15分!)

    但要扩展,它们的作用域不重叠,因此需要导入。