2016-11-25 2 views
0

I habe den folgenden Code den Knoten eines Baumes in den aktuellen Baum für darunter (der Union-Methode):Hinzufügen eines Elements zu einem Baum in scala

class NonEmpty(elem: Tweet, left: TweetSet, right: TweetSet) extends TweetSet { 

    def union(that: TweetSet): TweetSet = 
     { 
     that.incl(this.elem) 
     return that 
     } 
def incl(x: Tweet): TweetSet = { 
    if (x.text < elem.text) new NonEmpty(elem, left.incl(x), right) 
    else if (elem.text < x.text) new NonEmpty(elem, left, right.incl(x)) 
    else this 
    } 
} 

object Main extends App { 
    // Print the trending tweets 
    val gizmodoTweets = TweetReader.ParseTweets.getTweetData("gizmodo", TweetData.gizmodo) 
    val techCrunchTweets = TweetReader.ParseTweets.getTweetData("TechCrunch", TweetData.gizmodo) 
    val test1: TweetSet = TweetReader.toTweetSet(gizmodoTweets) 
    val test2: TweetSet = TweetReader.toTweetSet(techCrunchTweets) 
    test1.union(test2).foreach(x=> println(x)) 

}

Aber wenn ich drucken die Ausgabe der Union-Methode, sehe ich nicht die this.elem hinzugefügt, um die that Baum. Warum passiert dies?

+0

Ist die von Coursera Training, Kurs 1? Zeigen Sie, wie Sie versuchen, – Pavel

+0

zu drucken, fügte den Code für das Drucken hinzu ... – sarthak

+0

Ihre incl Funktion erstellen neue Instanz. Es ist also keine Modifikation. Ihre Version gibt also den ursprünglichen Parameter zurück. – Pavel

Antwort

4

Ihre incl -Methode gibt einen neuen Satz mit der Vereinigung der beiden anderen Sätze zurück, aber Sie werfen das Ergebnis weg und geben stattdessen den Parameter zurück.

Um es zu beheben, Ihre Gewerkschaft Methode, dies ändern:

def union(that: TweetSet): TweetSet = that.incl(this.elem) 
+0

Aber ändert die Anweisung 'that.incl (this.elem)' 'that', die jetzt das neue Element enthält, das dann von der nächsten Anweisung zurückgegeben wird. – sarthak

+0

Nein. 'TweetSet' ist unveränderlich. – marstran

+0

könnten Sie bitte mit einer ähnlichen Frage helfen: http://stackoverflow.com/questions/40810999/union-of-trees-in-scala – sarthak

Verwandte Themen