Ich habe einen einfachen abstrakten Datentyp, einen Baum.Argumente mit variabler Länge mit generischen Typen scala
sealed trait Tree[A]
case object EmptyTree extends Tree[Nothing]
case class Leaf[A](value: A) extends Tree[A]
case class Node[A](op: A => A, branches: List[Tree[A]]) extends Tree[A]
Wie kann ich den Betrieb machen, dass ein Node
eine variable Länge Anzahl von Argumenten vom Typ A zu akzeptieren hält?
Ein exemple:
def printAll(strings: String*) {
strings.foreach(println)
}
printAll
empfängt eine variable Anzahl von Strings.
In der gleichen Weise wollte ich meinen Tree einen Betrieb op
des Typs A* => A
halten.
Ein möglicher Weg wäre, es ein List[A]
zu erhalten, aber ich frage mich, ob es nicht eine direktere Möglichkeit, dies zu tun ist.
durch die Art und Weise kann ich auch branches: List[Tree[A]]
in so etwas wie branches: Tree[A]*
drehen. Ist das aus der Sicht des Designs sinnvoll?
geht es zu testen, macht es Sinn, als Sie für Ihre Antwort –
durch die Art und Weise, kann ich auch machen 'Zweige: Liste [Baum [A]])' wie 'Zweige: Baum [A] *'. Macht das aus einer Designperspektive Sinn? –
Die varargs macht Sinn, wenn Sie eine Funktion haben möchten, die n Elemente als Parameter akzeptiert, aber es macht weniger Sinn, wenn Sie die Felder einer Klasse deklarieren. Aber es liegt an dir, es zu benutzen. – Mikel