码迷,mamicode.com
首页 > 其他好文 > 详细

第85讲:Scala中For表达式的强大表现力实战

时间:2015-08-14 00:53:14      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

今日【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只是把写法变简洁 了 。
}
}

第85讲:Scala中For表达式的强大表现力实战

标签:

原文地址:http://www.cnblogs.com/trgaaaaa/p/4728804.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!