2017-10-10 12 views
-1

私は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。助けてもらえますか?

+0

私はその理由を知りました。クラスのインスタンスに値を設定する必要があるかもしれません。つまり、次のように 'num_bits'にアクセスすることができます: ' val bits = new Client(454).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) 
} 

は、あなたがそれを使用したい場合は、オブジェクトを作成する必要があります。

1

あなたは正しいですか?コンパニオンオブジェクトはシングルトンオブジェクトですが、クラスはマルチインスタンスです。したがって、そのフィールドにアクセスできるようにするには、そのクラスのインスタンスが必要です。そうでなければ、そのオブジェクトのnum_bitsが参照するクラスのインスタンスはどれですか?

関連する問題