Das yield-Schlüsselwort in der Programmiersprache Scala

Suraj P 18 April 2022
Das yield-Schlüsselwort in der Programmiersprache Scala

In diesem Artikel lernen wir anhand verschiedener Beispiele, wie man das Schlüsselwort yield in Scala verwendet.

Das Schlüsselwort yield wird mit for-Schleifen verwendet. Bei jeder Iteration der for-Schleife generiert yield einen gespeicherten Wert.

Es fungiert als Puffer für die for-Schleife. Für jede Iteration der for-Schleife werden diesem Puffer Elemente hinzugefügt.

Sobald die for-Schleife alle ihre Iterationen beendet hat, wird eine Sammlung aller ausgegebenen Werte zurückgegeben.

Der Typ der zurückgegebenen Sammlung. Derselbe Typ for-Schleife wurde iteriert, also ergibt eine List eine List, eine Map ergibt eine Map, ein array ergibt ein array und so weiter.

Die Syntax von yield:

for() yield variable;

Verwenden des Schlüsselworts yield in einem Array in Scala

Wir iterieren über alle Elemente eines Arrays mit der for-Schleife und verwenden das Schlüsselwort yield, um Elemente bei jeder Iteration der for-Schleife zu speichern.

Beispielcode:

object MyClass {
    def main(args: Array[String]) : Unit = {
        val array = Array(100,200,300,500,600)
        
        var buffer = for (i <- array if i > 200) yield i
        
        for(i<-buffer)
        {
            
            println(i) 
        } 
    }
}

Ausgabe:

300
500
600

yield mit Scala-Liste

Wir werden alle Elemente einer Liste mit der for-Schleife durchlaufen und das Schlüsselwort yield verwenden, um Elemente bei jeder Iteration der for-Schleife zu speichern und einige Operationen an ihnen auszuführen.

object MyClass {
    def main(args: Array[String]) : Unit = {
       val myList = List(1,2,3,4,5,6,7,8,9,10)
       
       var buffer = for (i <- myList) yield i*i*i
        println("Values from yield")
            for(i <- buffer) println(i)
    }
}

Ausgabe:

Values from yield
1
8
27
64
125
216
343
512
729
1000
Autor: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub