用于理解的Scala模式匹配

uh_*_*boi 1 scala pattern-matching for-comprehension

在 Scala 中,您是否可以有一个 for 理解,它遍历对象列表,然后根据元素的一个属性的类型创建一个值数组?所以假设我有一个元素列表,每个元素都有一个属性,并且属性可以是不同的类型......

for (element <- elementList) element.attribute match {
 case a: Type1 => "Type1"
 case a => "All Types"
}
Run Code Online (Sandbox Code Playgroud)

然后生成的 Array 将是一个具有类似值的数组

Array("Type1", "Type1", "All Types", "Type1", "All Types", "All Types", "All Types", "All Types") 
Run Code Online (Sandbox Code Playgroud)

Jas*_*r-M 6

你所要做的就是yield一个结果......并且可能转换为Array.

(for (element <- elementList) yield element.attribute match {
  case a: Type1 => "Type1"
  case a => "All Types"
}).toArray
Run Code Online (Sandbox Code Playgroud)