High-order function filter Source analysis
Package Com.dt.scala.forexpression
Case class Person (name:string, Ismale:boolean, children:person*)
Object For_expressive {
def main (args:array[string]) {
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 (person =!person.ismale) FlatMap (person =
(Person.children map (child = (Person.name, child.name)))
println (Result)
Val Forresult = for (person <-persons, if!person.ismale; child <-Person.children)
Yield (Person.name, child.name)
println (Forresult)
}
}
FlatMap, flattening, is the merging of 2 sets.
The functions in the example can be implemented with a for loop, and the expressive force is clearer.
Behind the For loop is the Flatmap way, and the jump code can see Flatmap directly. Powerful features.
Scala's in-depth combat classic 85th: the powerful expressive combat of the for expression in Scala