Scala高阶函数(匿名函数)

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函数的时候使用

  //偏函数 类似于模式匹配
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值