首页 > 其他 > 详细

Scala 深入浅出实战经典 第85讲:Scala中For表达式的强大表现力实战

时间:2015-09-12 00:57:57      阅读:428      评论:0      收藏:0      [点我收藏+]

高阶函数 filter 源码分析

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, 压扁,是将2个集合合并。

用for循环一样能实现示例中的功能,表达力更清晰。

for循环背后是flatMap的方式,跳转代码能直接看到flatMap。强大的功能。



Scala 深入浅出实战经典 第85讲:Scala中For表达式的强大表现力实战

原文:http://2615187.blog.51cto.com/2605187/1693942

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!