有没有一种方法可以使伴侣对象函数私有化,并将伴侣对象导入类,然后访问该函数?

时间:2020-01-26 00:13:22

标签: scala

有人告诉我将伴随对象函数设为私有,然后将伴随对象导入到该类中,然后在该类中访问该函数。

以下代码在副本中不起作用。

示例:

object Foo {
  private def bar(i: Int): Boolean = i == 5
}

class Foo{
  import Foo._

  bar(0) 
}

object Foo {
  private def bar(i: Int): Boolean = i == 5
}

class Foo{
  import Foo._

  Foo.bar(0) 
}
scala> object Foo {
     |   private def bar(i: Int): Boolean = i == 5
     | }
defined object Foo

scala> 

scala> class Foo{
     |   import Foo._
     | 
     |   bar(0) 
     | }
<console>:15: error: not found: value bar
         bar(0)
         ^

scala> 

scala> object Foo {
     |   private def bar(i: Int): Boolean = i == 5
     | }
defined object Foo

scala> 

scala> class Foo{
     |   import Foo._
     | 
     |   Foo.bar(0) 
     | }
<console>:15: error: method bar in object Foo cannot be accessed in object Foo
         Foo.bar(0)
             ^

1 个答案:

答案 0 :(得分:3)

根据docs

伴随对象及其类可以访问每个其他私有对象 成员

问题可能是在REPL中没有将其识别为同伴。尝试启用:paste模式。