Scala的for-yield结构怎么用于扁平和映射集合

2024-05-07

在Scala中,for-yield结构可以用于扁平化和映射集合。通过for-yield结构,我们可以使用一个或多个生成器来遍历集合,并对集合中的元素进行筛选、转换等操作,最终生成一个新的集合。

下面是一个示例,演示如何使用for-yield结构来对一个包含多个列表的列表进行扁平化和映射操作:

val listOfLists = List(List(1, 2, 3), List(4, 5, 6), List(7, 8, 9))

val flattenedAndMappedList = for {
  list <- listOfLists // 生成器,遍历包含多个列表的列表
  element <- list     // 生成器,遍历每个列表中的元素
} yield element * 2    // 对每个元素进行映射操作,乘以2

println(flattenedAndMappedList) // 输出结果为 List(2, 4, 6, 8, 10, 12, 14, 16, 18)

在上面的示例中,for-yield结构首先遍历包含多个列表的列表listOfLists,然后再遍历每个列表中的元素,最终对每个元素进行乘以2的操作,生成一个新的扁平化和映射后的列表flattenedAndMappedList