私はScalaが初めてです。クラスにメソッドを実装するにはどうすればよいですか?
次のような特性を定義しました。
trait Node extends Component{
val label:Int
val inputEdges:List[Edge] = List[Edge]()
val outputEdges:List[Edge] = List[Edge]()
def addInputEdge(edge:Edge) = {
inputEdges :+ edge
this
}
def addOutputEdge(edge:Edge) = {
outputEdges :+ edge
this
}
}
case class SomeNode(label:Int) extends Node
2 つの方法を実装する方法を理解するために助けが必要です。
Node を拡張するすべてのクラスは、コンストラクターでラベルを提供する必要がありますが、2 つのメソッドと 2 つのリストを継承する必要があります。また、メソッドは、エッジがリストの 1 つに追加されたノードの新しいオブジェクトを返す必要があります。現在、メソッドの 1 つを呼び出すと、リストの 1 つにエッジが追加されていない同じオブジェクトが取得されます。理にかなっていますが、2 つのリストが不変の場合にエッジを追加する方法がわかりません。
多くのパラメーターを持つコンストラクターを取得するため、コンストラクターでリストを渡したくありません。