Закрытое значение класса Scala недоступно в сопутствующем объекте.

У меня есть класс Scala и его сопутствующий объект (в Client.scala) следующим образом:

class Client(val key: Int) {
     private val num_bits = 5
}

object Client {
     val count_entries = Math.pow(2, num_bits).toInt
     println(count_entries)
}

Тем не менее, он выдает ошибку в клиентском объекте, что not found: value num_bits, Может ли кто-нибудь помочь?

2 ответа

Решение

Вы можете использовать это так:

class Client(val key: Int) {
     private val num_bits = 5
}

object Client {
     val count_entries = Math.pow(2, new Client(0).num_bits)
     println(count_entries)
}

Вы должны создать объект, если хотите использовать его.

Ты прав. Сопутствующий объект является одноэлементным объектом, в то время как классы имеют несколько экземпляров. Следовательно, вы должны иметь экземпляр класса, чтобы иметь возможность доступа к его полям - в противном случае, какой экземпляр класса будет num_bits в объекте ссылаться?

Другие вопросы по тегам