case class Person(name: String, isMale: Boolean, children: Person*)
object For_expressive {
def main(args: Array[String]): Unit = {
val lauren = Person("Lauren", false)
val rocky = Person("Rocky", true)
val vivian = Person("Vivian", false, lauren, rocky)
val persons = List(lauren, rocky, vivian)
//通过高阶函数的方式
val result = persons.filter(persion => !persion.isMale).flatMap(persion =>
persion.children.map(child => (persion.name, child.name)))
println(result)
//通过for循环的方式,其实for循环的背后是转换成filter、map类的操作
val forResult = for(person <- persons; if !person.isMale; child <- person.children)
yield (person.name, child.name) //yield是用在for循环中的,记录每次循环的值
println(forResult)
}
}
scala进阶29-for的强大表达力
最新推荐文章于 2022-08-09 19:36:34 发布