Закрытое значение класса 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
в объекте ссылаться?