How to combine filter and map in Scala?

A for comprehension (which internally unfolds into a combination of map and withFilter) as follows,

for (x <- xs if x % 2 == 0) yield x*2

Namely

xs.withFilter(x => x % 2 == 0).map(x => x*2)

As I state in my comment, collect should do what you want:

list.collect{
  case x if x % 2 == 0 => x*2
}

The collect method allows you to both specify a criteria on the matching elements (filter) and modify the values that match (map)

And as @TravisBrown suggested, you can use flatMap as well, especially in situations where the condition is more complex and not suitable as a guard condition. Something like this for your example:

list.flatMap{
  case x if x % 2 == 0 => Some(x*2)
  case x => None
}