Scala中For表达式的强大表现力
2015-08-13 07:13
323 查看
学习了Scala中For表达式的强大表现力,scala 应用for循环比应用高阶函数表现力强很多,高阶函数的行为指定了对数据处理的细节。实际上 for是用map的方式,更加简洁。
例子如下
case class Person(name:String,isMale:Boolean,children:Person*)/ildren可变参数
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)
王家林亲授《DT大数据梦工厂》大数据实战视频“Scala深入浅出实战经典”视频、音频和PPT下载!第85讲:Scala中For表达式的强大表现力实战
百度云盘:http://pan.baidu.com/s/1hqeuFp6
360云盘:http://yunpan.cn/cdRhVZZYrIYcp 访问密码 a5b9
腾讯微云:http://url.cn/Zoao1y
例子如下
case class Person(name:String,isMale:Boolean,children:Person*)/ildren可变参数
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)
王家林亲授《DT大数据梦工厂》大数据实战视频“Scala深入浅出实战经典”视频、音频和PPT下载!第85讲:Scala中For表达式的强大表现力实战
百度云盘:http://pan.baidu.com/s/1hqeuFp6
360云盘:http://yunpan.cn/cdRhVZZYrIYcp 访问密码 a5b9
腾讯微云:http://url.cn/Zoao1y
相关文章推荐
- 如何安装g++/gdb
- 基于线性探测法的散列表
- 零基础学python-2.16 列表解析
- 零基础学python-2.16 列表解析
- 基于拉链法的散列表
- 零基础学python-2.15 回到我们的游戏 加入for以及列表
- 零基础学python-2.15 回到我们的游戏 加入for以及列表
- 零基础学python-2.14 for循环语句
- 零基础学python-2.14 for循环语句
- 零基础学python-在3.x版本之后的print()不换行
- 零基础学python-在3.x版本之后的print()不换行
- Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句
- AngularJS权威教程(www.Linuxidc.com整理)2
- AngularJS权威教程(www.Linuxidc.com整理)1
- Scala中List的Scala中List和ListBuffer设计实现
- C语言的函数
- 函数调用
- 【LeetCode-面试算法经典-Java实现】【119-Pascal's Triangle II(帕斯卡三角形(杨辉三角)II)】
- 【LeetCode-面试算法经典-Java实现】【118-Pascal's Triangle(帕斯卡三角形)】
- 【LeetCode-面试算法经典-Java实现】【117-Populating Next Right Pointers in Each Node(二叉树链接右指针II)】