とのプライベートメンバの公開サブメンバーを暴露(例は簡略化されますが、すべての重要な部分を含んでいる):パズル - 私はこのような何かをしたいと思いますカスタムタイプ
class Master
{
type DataType = Int
var counter : DataType = 0
}
class Slave(private val master : Master)
{
val counter = master.counter // (*)
}
そして、ここで(* )私はエラーを取得する:
private value master escapes its defining scope as part of type Slave.this.master.DataType
val counter = master.counter
私は、エラーを理解し、私はその理由を理解していない - のタイプは、クラスMaster
、オブジェクトではありませんmaster
の一部であり、そのクラスがプライベートであるかどうかは重要であり、オブジェクトではありません。まあ、少なくとも理論的には。
それは迅速な回避策を作るのは簡単です:
val counter : Master#DataType = master.counter
しかし、私は、これは以前のようにまったく同じコードの明示的なバージョンであると信じて、それが「唯一」よりタイピングをとります。これは機能ですか?
QUESTION:
タイプ(ここではデータ型が)Scalaでのクラス(クラスのインスタンスごとに、すなわちタイプ定義)オブジェクトの依存性、およびでないことができますか?
ありがとう、もし私がこれを正しく理解していれば(しかし、私は「Scalaのプログラミング」でそれを読んでいなかったと思いますが、それがずれたかもしれません)、クラスごとにだけでなく、 。 – greenoldman
更新していただきありがとうございます。残念ながら、私はあなたのポストを1つ以上アップアップすることはできません: – greenoldman
これは、他のOOP言語から来たときに "つかむ"ことができるScalaの便利なものの1つです。非常に簡潔な答え。私のupvoteの価値がある;)。 – TechNeilogy