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
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…