scala模式匹配的理解

时间:2017-10-14 10:02:41

标签: scala pattern-matching for-comprehension

在scala中,你是否可以通过一个对象列表进行迭代,然后根据元素的一个属性的类型创建一个值数组?假设我有一个元素列表,每个元素都有一个属性,属性可以是不同的类型......

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") 

2 个答案:

答案 0 :(得分:3)

为什么您不使用List(Element)List(String)的地图功能?

如果您想从List(String)获取数组,则可以使用toArray函数。

答案 1 :(得分:3)

您只需要yield结果......并且可能会转换为Array

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