私は Scala は初めてですが、古い習慣を捨てて関数型スタイルに乗ろうとしている経験豊富なプログラマーです。私が設計している単純なプログラムには、質問/回答オブジェクトが含まれており、成功に関するいくつかの基本的な事実が保持されています。不変オブジェクトを使用すると、これだけでも十分に簡単ですが、私の目的の一部は、関連する事実をリンクすることです。(例: 「ナイト ライダー カーは?」、「インパラが登場するテレビ番組は?」)
Java では、以下に記述したように、関連付けられたオブジェクトをリンクしただけかもしれませんが、不変の法則がこれを防ぎます (A-> B をリンクし、B -> A をインスタンス化することはできません。
そして、これはおそらく良いことであることを認めなければなりません。関数型スタイルは、この種の循環参照を防ぐように設計されているのかもしれません。しかし、私は問題を修正する方法に途方に暮れています。質問が尋ねられると、私の設計は失敗します。これは、「right 、asked」の新しい値を持つコピー オブジェクトを返すため、オブジェクト リンクは再び落とし穴のように見えます。私の最善の推測は、Q/A データのみに基づいて、ヘルパー オブジェクトでリレーション セットを構築することですが、別のデータ パターン オブジェクトをジャグリングすることは避けたいと思います。
ありがとうございました - オハイオ州コロンバスのティム
case class FactItem (
q:String, a:String,
right: Double = 0.0,
asked: Double = 0.0,
linked: List[FactItem] = List[FactItem]()
) {
def rP = right / asked //right per
def subLink( l:List[FactItem] ) : FactItem = {
this.copy( linked = l-this)
}