高階函數(上)
阿新 • • 發佈:2019-03-29
變量 int for take nta foreach 行操作 clas each
map
逐個操作
集合中的元素,註意有別於Map
- 先定義一個集合
val l = List(1,2,3,4,5,6,7,8)
- 逐個加1
// 匿名函數
l.map((x:Int)=>x+1) // (2,3,4,5,6,7,8,9)
- 可以簡化參數類型
l.map((x) => x+1) // scala自動推斷參數類型
- 省略括號
// 當括號裏只有"一個"元素時,可以省略括號
l.map( x => x+1)
- 使用占位符語法
l.map( _ + 1 ) // 每個元素+1 // 打印 l.map(_ + 1).foreach(println)
flatMap
對每個元素進行操作後,返回的不是新的元素,而是“容器”;
多個元素,自然就有了
多個
“容器”;之後再把這“多個容器”
拍扁
,使之成為新的元素集合。
val l = List("Hadoop","Hive","Spark")
// List(H, A, D, O, O, P, H, I, V, E, S, P, A, R, K)
l flatMap (s => s.toUpperCase)
filter
過濾
元素,只有滿足條件
的元素才會被返回,滿足條件的元素形式一個新的容器
val l = List(1,2,3,4,5,6,7,8) // 使用filter過濾 l.filter(_>5).foreach(println) // 大於5 // 能被2整除 l filter (_%2==0) // 有返回值,可賦予變量 // 包含某個元素(字符串中應用較多) s filter (kv => kv._2 contains "xiamen") // 取前幾個元素 println(l.take(3))
高階函數(上)