In Scala, the `
yield` keyword is used in a generator expression to construct a collection based on the elements generated by the expression. It allows you to transform and filter the elements produced by the generator expression and collect them into a new collection.
A generator expression is defined using the `
for` comprehension syntax, which combines `
yield` with one or more generator clauses and optional filter conditions. The `
yield` keyword specifies the expression to be generated for each element produced by the generators and filters.
Here's an example to illustrate the use of `yield` in a generator expression :
val numbers = List(1, 2, 3, 4, 5)
val doubled = for (n <- numbers) yield n * 2
println(doubled) // Output: List(2, 4, 6, 8, 10)
In this example, we have a list of numbers `
[1, 2, 3, 4, 5]`. Using the `
for` comprehension with `
yield`, we iterate over each element in the `
numbers` list, and for each element `
n`, we yield `
n * 2`. The result is a new list `
doubled` that contains the doubled values of the original numbers.
The `
yield` keyword captures the generated values and constructs a new collection of the same type as the generator expression. In this case, the generator expression is based on a list, so the result is also a list. However, the type of the result can vary depending on the type of the generator expression.
The `
yield` keyword is useful when you want to transform or filter the elements produced by a generator expression and collect the results into a new collection. It provides a concise and readable way to express such transformations, making your code more expressive and maintainable.