# scala yield how to share one loop

In Scala, you can use the `yield`

keyword to create a new collection by applying a transformation to each element of an existing collection. To share one loop among multiple `yield`

expressions, you can use a for comprehension.

Here's an example of how you can share one loop using `yield`

in Scala:

```
val numbers = List(1, 2, 3, 4, 5)
val result = for {
number <- numbers
multiplied = number * 2
squared = multiplied * multiplied
} yield squared
// result: List(4, 16, 36, 64, 100)
```

In this example, we have a list of numbers. We use a for comprehension to iterate over each number in the list. Inside the for comprehension, we define two new variables: `multiplied`

, which is the number multiplied by 2, and `squared`

, which is the result of multiplying `multiplied`

by itself. The `yield`

keyword is used to create a new collection with the squared values.

The resulting collection `result`

will contain the squared values of each number in the original list.

Note that the `yield`

keyword is optional in Scala. If you don't specify it, the for comprehension will return a `Unit`

value.