+ Antworten
Ergebnis 1 bis 4 von 4

Thema: Iteration in konstruierendem pattern-matching?

  1. #1
    User short Themenstarter

    Registriert seit
    07.08.2013
    Fachbeiträge
    27
    Genannt
    0 Post(s)
    Hallo,

    ich habe folgende Baumstruktur:
    Code:
    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:
    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
    Geändert von Turakar (03.06.2014 um 21:18 Uhr)

  2. #2
    Global Moderator Floppy Disc Avatar von Landei
    Registriert seit
    31.07.2013
    Ort
    Sandersdorf-Brehna
    Fachbeiträge
    990
    Genannt
    163 Post(s)
    Blog-Einträge
    27
    Ich habe es jetzt nicht ausprobiert, aber es sollte (zumindest im Prinzip) so gehen:

    Code:
    	def treeToString(): String = {
    		this match {
    			case e: Item      => e.name()
    			case e: Container =>  e.children.map(_.treeToString()).mkString("[", ",", "]")
    		}
    	}

  3. #3
    User short Themenstarter

    Registriert seit
    07.08.2013
    Fachbeiträge
    27
    Genannt
    0 Post(s)
    Werde ich morgen testen, danke schonmal!

  4. #4
    User short Themenstarter

    Registriert seit
    07.08.2013
    Fachbeiträge
    27
    Genannt
    0 Post(s)
    Klappt, danke!

+ Antworten Thema als "offen" markieren

Direkt antworten Direkt antworten

Nenne eine bekannte Programmiersprache!

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Strukturelles Pattern Matching
    Von Landei im Forum neco4j
    Antworten: 2
    Letzter Beitrag: 01.06.2014, 22:28
  2. Datenbank iteration + Mail-Adresse überprüfen
    Von Helveticus im Forum Programmierung
    Antworten: 4
    Letzter Beitrag: 13.08.2013, 17:01
  3. Datenbank iteration + Mail-Adresse überprüfen
    Von Helveticus im Forum Datenbankprogrammierung
    Antworten: 4
    Letzter Beitrag: 13.08.2013, 17:01
  4. Java-Blog-Buch - "B) Command-Pattern und Observer-Pattern"
    Von RSS Reader im Forum Java-Blog-Buch
    Antworten: 0
    Letzter Beitrag: 15.10.2011, 13:42
  5. SSN Matching Speed Phreakery
    Von RSS Reader im Forum simple-talk - category SQL
    Antworten: 0
    Letzter Beitrag: 06.08.2010, 10:50

Stichworte

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •