在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
。