Hallo,
ich habe folgende Baumstruktur:
Container
|
--- Item
|
--- Container
| |
| --- Item
|
--- Item
Nun möchte ich mit konstruierendem Pattern-Matching einen String erstellen, der die Baumstruktur ausgibt. Meine Frage ist nun, wie ich es hinkriege, dass im Falle eines Containers durch die gesamte children
Liste iteriert wird und auf jedes Element wieder die treeToString()
Methode aufgerufen wird.
Mein bisheriger Code:
package de.***.inv
import scala.collection.mutable.LinkedList
abstract class Element(parName: String, parWeight: Float) {
def name() = parName
def weight() = parWeight
var parent: Container = null
def treeToString(e: Element): String = {
e match {
case e: Item => e name
case e: Container =>
}
}
def setParent(newParent: Container) {
parent = newParent
}
def getParent() = parent
}
case class Item(parName: String, parWeight: Float) extends Element(parName, parWeight)
case class Container(parName: String, parWeight: Float, parCapacity: Float) extends Element(parName, parWeight) {
def capacity() = parCapacity
var children: LinkedList[Element] = LinkedList[Element]()
def addChild(newChild: Element) {
children.+:(newChild)
newChild setParent this
}
}
Bin noch ziemlicher Noob in Scala, trotz jahrelanger Java-Erfahrung… Aber egal, Scala ist irgendwie anders, trotz gleichen Bytecodes.
PS: Gibt es einen Scala-Codetag?
MfG
Turakar