Scala-闭包的具体应用

本文深入探讨了Scala中的闭包概念,通过实例展示了如何使用闭包实现灵活的函数扩展。从简单的两数相加到更复杂的固定加数场景,再到闭包作为返回值的函数,逐步揭示了闭包在提升代码复用性和灵活性上的作用。文章还演示了Lambda表达式的使用,以及如何通过闭包实现只传入一个参数即可完成多个参数的计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.scala.A
/**
 * 闭包的具体应用
 * */
object scala_function_03_1 {
  def main(args: Array[String]): Unit = {
    //------------------------------------------------------------------------------------------------------------------
    /**
     * 常规逻辑
     * 两个变量相加的函数
     * 如果是想计算两万个数相加呢,这种思想就太麻烦了
     **/
    def add0(a: Int, b: Int): Int = {
      a + b
    }
    //------------------------------------------------------------------------------------------------------------------
    /**
     * 1)考虑固定一个(一些)加数的场景 */
    def add1(b: Int): Int = {
      4 + b
    }

    /** 这种扩展方式的调用,只需要传一个参数进来就行 */
    val res1 = add1(2)
    println(res1)
    //------------------------------------------------------------------------------------------------------------------
    /**
     * 2)扩展固定加数改变的情况 */
    def add2(b: Int): Int = {
      5 + b
    }
    //------------------------------------------------------------------------------------------------------------------
    /**
     * 3)将固定加数也作为一个参数传入,但是把这个固定加数作为第一层参数传入(把通用性进行扩展)
     **/
    def add3(): Int => Int = {
      /** 定义了一个局部变量,传给内部函数做加法 */
      val a: Int = 1

      def add3_1(b: Int): Int = {
        a + b
      }

      /** 将内部函数作为返回值调用 */
      add3_1
    }
    //------------------------------------------------------------------------------------------------------------------
    /**
     * 3.1) 将上面升级,换种写法
     * 此时的函数就是传入一个变量a,返回值类型为一个函数(Int=>Int),将一个函数作为返回值调用,内部函数调用
     * 这里就是闭包,内部函数执行时调用了外部变量,通用性与实用性的一个平衡和结合
     **/
    def add4(a: Int): Int => Int = {
      def add4_1(b: Int) = {
        a + b
      }

      add4_1
    }

    /** 这种扩展方式的调用,传入两个参数 */
    println(add4(25)(25))

    /** lambda表达式写法 */
    def add5(a: Int): Int => Int = a + _
    println(add5(99)(1))
    //------------------------------------------------------------------------------------------------------------------
  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

文文鑫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值