标签:
今日【DT大数据梦工厂视频】《第85讲:Scala中For表达式的强大表现力实战》
51CTO视频:http://edu.51cto.com/lesson/id-71503.html
(DT大数据梦工厂scala的所有视频、PPT和代码在百度云盘的链接:http://url.cn/fSFPjS)
85讲 scala for 表达式的强大表现力
高阶函数的行为 指定了对数据 处理 的细节 。
case class Person(name:String,isMale:Boolean,children:Person*)//children可变参数
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))))//每个child返回妈妈的名字和孩子的名字
//flatMap是把几个对象合成一个
//List((Vivian,Lauren),(Vivian,Rocky))
println(result)
val forResult=for(person<-persons;if!person.isMale;child<-person.children)
yield(person.name,child.name)
println(forResult)
//List((Vivian,Lauren),(Vivian,Rocky))
//相同的输出,但是 for更简洁。
//实际上 for是用map的 方式。
//这 就是把for编译转换 成 之前的方式。
//for只是把写法变简洁 了 。
}
}
标签:
原文地址:http://www.cnblogs.com/trgaaaaa/p/4728804.html