package com.模式匹配 object FunctionApp extends App{ /**匿名函数 * (x:Int) => x+1 * {x:Int => x+1} */ //scala 把函数赋值给一个变量 def sayHello(name:String): Unit ={ println("hello: " + name) } def add(x:Int,y:Int): Unit ={x+y} def add2 = (x:Int,y:Int) =>{x+y} val sayHello1 = (name:String) => println("I am "+name) sayHello1("wth") val sf = sayHello("wth") val sf1 = sayHello _ println(sf1("wth1")) /** * 高阶函数====================================================================================================== */ //list元素乘以2,对每一个元素都做同一个操作 val l =List(1,2,3,4,5,6,7,8) l.map((x:Int) => x*2)//最古老的方法 l.map(x => x*2)//简化的写法 l.map(_*2)//超简化写法 l.map(_*2).filter(_>8)//过滤 l.take(4)//取前N个 //reduce 对元素x,y进行处理,使用后面的x+y方法进行处理,进行以此类推 l.reduce((x,y)=>x+y) l.reduce(_+_)//简写 l.reduceRight(_+_) l.max l.min l.sum l.count(_ > 3) val f = List(List(1,2),List(3,4),List(5,6)) f.flatten//数据平铺,不同类型就是Any,数据扁平化 f.flatMap(_.map(_*2))//map+flatten f.map(_.map(_*2)) //currying函数 Spark SQL UDF函数的时候使用 def sum(a:Int,b:Int) = a+b println(sum(1,2)) def sum2(a:Int)(b:Int) = a+b println(sum2(1)(2))//Spark SQL UDF函数的时候使用 //偏函数 类似于模式匹配 }
Scala高阶函数(匿名函数)
最新推荐文章于 2024-06-14 16:52:56 发布