用于理解的 Scala 模式匹配

scala pattern matching for comprehension

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

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

然后生成的数组将是一个数组,其值类似于

Array("Type1", "Type1", "All Types", "Type1", "All Types", "All Types", "All Types", "All Types") 

为什么不使用从 List(Element)List(String) 的映射函数?

如果你想从 List(String) 得到一个数组,你有函数 toArray.

您所要做的就是 yield 结果...并可能转换为 Array.

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