Scala函数柯里化&闭包学习笔记

闭包:函数式编程的标配

(1)说明

          闭包:如果一个函数,访问到了它的外部(局部)变量的值,那么这个函数和他所处的环境,称为闭包

         函数柯里化:把一个参数列表的多个参数,变成多个参数列表

(2)案例实操

        (1)闭包

        定义两个参数求和的函数

            

     1.考虑固定一个加数的场景,只改变一个加数

//    以下代码
//    兼容性非常好,通用性强,适用性差
//    适应性差,每次使用函数都要向里面传入两个参数
    def add(a:Int,b:Int):Int ={
      a+b
    }
    println(add(1,2))

           2.拓展固定加数改变情况

 def add3(b:Int):Int ={
      5+b
    }

        3.将一个固定参数作为另一个参数传入,但是是作为“第一层参数”传入

 def add4():Int=>Int ={
      val a = 4
      def addB(b:Int):Int ={
    a+b
    }
      addB
    }

  def add5(a:Int):Int=>Int ={
    def addB(b:Int):Int ={
      a+b
    }
    addB
  }
println(add5(56)(45))

val add6 =add5(5)
    val add7=add5(8)

    println(add6(12))
    println(add7(45))
//    闭包通用性的体现

        4.Lambad表达式简写

def addByA1(a:Int):Int=>Int={
    (b:Int)=>{
      a+b
    }
  }

        简化1

  def addByA2(a:Int):Int=>Int={
      b=>a+b
      }

        简化2

 def addByA3(a:Int):Int=>Int= a +_

        输出

   // 定义
    val addA3 =addByA3(5)
    val addA4=addByA3(8)
   // 输出
    println(addA3(12))
    println(addA4(45))

5.柯里化

    def addCurrying(a:Int)(b:Int):Int={
      a+b
    }
    println(addCurrying(35)(24))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神明不诉人间苦604

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值