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

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

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

标签:scala

高阶函数 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表达式的强大表现力实战

标签:scala

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

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