Подтвердить что ты не робот

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

В "Хорошей книге" говорится, что:

Класс и его сопутствующий объект могут обращаться к частным членам других.

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

object Foo {
  def bar = 4
 }

class Foo {
 def foo = bar
}

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

class Foo {
  import Foo._

  def foo = bar
}
4b9b3361

Ответ 1

Да, так и есть. Там есть доступ, и есть область видимости - у какого класса/объектов класса есть доступ, а не область.

Мне нравится объявлять что-то общедоступное vs private - это не доводит этих членов до всех областей, а просто дает им доступ к нему.

Ответ 2

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

object Foo {
  private def bar = 4
}

class Foo {
  def foo = Foo.bar
}

Ответ 3

Да (и я хочу, чтобы мои 15 очков за это!)

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