Нужно ли импортировать элементы одноэлементного объекта в его класс-компаньон в Scala?

Хорошая книга утверждает, что:

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

Возможно, наивно, Я понял, что это означает, что классу не нужно явно импортировать элементы из своего сопутствующего объекта. То есть, сработало бы следующее:

object Foo {
  def bar = 4
 }

class Foo {
 def foo = bar
}

Ну, причина, по которой вы читаете это, в том, что это не так. Так что мне действительно нужно объявить что-то вроде этого:

class Foo {
  import Foo._

  def foo = bar
}
17
задан lindelof 19 August 2010 в 21:20
поделиться

3 ответа

Да, именно так, как вы заявляете. Есть доступ, и есть область видимости - сопутствующие классы / объекты имеют доступ, а не область действия.

Это похоже на объявление чего-то публичного и частного - это не делает этих участников доступными для всех, а просто дает им доступ к этому.

17
ответ дан 30 November 2019 в 13:20
поделиться

Да (и я хочу получить за это свои 15 очков!)

Но для расширения их области не перекрываются, поэтому импорт необходим.

3
ответ дан 30 November 2019 в 13:20
поделиться

"Может получить доступ к закрытым членам" означает, что работает следующее:

object Foo {
  private def bar = 4
}

class Foo {
  def foo = Foo.bar
}
4
ответ дан 30 November 2019 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: