ある種の単純なリンクリストを実装したいと考えています。
抽象 No を定義し、フィールドが次にあり、そのタイプは Node です。次に、抽象ノードを継承する他の特定のノードがたくさんあります。
私はこのように書きます:
abstract class Node {
def next: Node
}
case class SpecificNode(nxt: Node) extends Node {
val next = nxt
}
object NullNode extends Node{
val next = new Exception("no more node")
}
ただし、次のフィールドを変更する必要があることがわかったので、SpecificNode で次のようにします。
case class SpecificNode(nxt: Node) extends Node {
var next = nxt
}
ただし、next
特定のノードのインスタンスのフィールドに割り当てることはできません。たとえばsn.next = ...
、コンパイラnext_
がノードのメンバーではないと不平を言うためです。
次に、フィールドvar
の抽象クラス Node で使用するように変更しました。next
しかし、NullNode を新規作成すると、例外がスローされます (そう定義したため..)
では、ここvar
で , ,をどのように使用すればよいでしょうか? これ以上ノードがないことを意味する NullNode をどのように定義すればよいですか?def
val