Map
をcase class
というオブジェクトに維持したいので、新しいインスタンスを追加してIDでそれらを探すことができます。Scalaでケースクラスオブジェクトのマップを維持する
私の現在の(非常に醜い)溶液(ストリップダウン):
case class cc(i: Int)
var myccmap: Map[Int, cc] = null
def addcc(thecc: cc): cc = {
if (myccmap == null) {
myccmap = Map(thecc.hashCode, thecc)
}
else {
myccmap = myccmap ++ Map(thecc.hashCode, thecc)
}
thecc
}
そして他の場所で、私はaddcc
を追加私のcc
オブジェクトのMap
を維持するために、例えば、val somecc = addcc(cc(56))
を使用することができます。
このようにして、私はファイルにいくつかのデータを含むhashCodeだけのキーを格納し、ファイルを読むと、hashCodeを参照してcc
オブジェクトを抽出することができますmyccmap
には存在しません)。
これを行うには、null
のチェックに頼らないのが理想的ですか?
私は空のマップを作成するために 'Map()'を使用できることを発見しました。これにより、「ヌル」のチェックが不要になります。誰かがもっと良い解決策を持っている場合に備えて... – spiffman
空のMapを作るのに 'Map.empty'を使うべきでしょう。 –
それは他の理由のために悪い考えです:1)異なるオブジェクトは同じハッシュコードを持つことができるので、あなたはちょうどこのような2つのオブジェクトを持って起こる、あなたは本当に奇妙なエラーに終わるでしょう。 2)ハッシュコードは、プログラム実行の間に安定することは保証されていません。 –