第85讲:Scala中For表达式的强大表现力实战
今日【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只是把寫法變簡潔 了 。
}
}
轉載于:https://www.cnblogs.com/trgaaaaa/p/4728804.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的第85讲:Scala中For表达式的强大表现力实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac下批量删除.svn文件
- 下一篇: Fragment要点复习