Есть ли способ сделать объект-компаньон частным и импортировать объект-компаньон в класс, а затем получить доступ к функции? - PullRequest
0 голосов
/ 26 января 2020

Кто-то мне сказал, чтобы сделать функцию объекта-компаньона частной, импортировать объект-компаньон в класс и затем получить доступ к функции в классе.

Следующий код не работает в реплее.

Пример:

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 Ответ

3 голосов
/ 26 января 2020

Согласно документам

Объект-компаньон и его класс могут получить доступ к закрытым членам друг друга

Проблема может быть, в REPL он не распознает его как собеседника. Попробуйте с включенным режимом :paste.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...