Scala闭包使用与理解

闭包的理解,开发java的同学需要转个弯理解,以下例子很好的解释了一个简单闭包的使用。

在java中可以理解为一个内部的函数,在scala中直接简化为一个内部函数了。

这个内部函数可以直接作为结果返回给调用者;其实和工厂方法有点类似,根据入参数的值,返回不通的对象,这儿是返回不同的方法:

package com.atguigu.wc

object ClosePackage {

  def main(args: Array[String]): Unit = {

    def getHelloFunc(msg:String) = (name:String) => println(msg + "," + name)
    //定义一个函数getHelloFunc入参为msg,函数实现为一个没有名字的内部函数,函数的入参为name

    val sayHello = getHelloFunc("hello") // 传入msg的值 ,后面sayHello依然可以访问到
    val sayHi = getHelloFunc("hi")
    //得到的sayHello、sayHi为一个内部函数。且函数里面的msg已经被设置为不同的只。

    // 两次条用getHelloFunc,传入不同的msg,创建不同的函数返回
    // 然而msg只是一个局部变量,
    // 在getHelloFunc调用后,还继续存在创建的函数中,当sayHello("yxj")调用时,值为hello的msg保留在了函数内部,可以反复使用
    // 这种变量超出了其作用域,还可以使用的情况,就是闭包

    // scala

    sayHello("yxj") // 打印 hello,yxj
    sayHi("yxj") // 打印 hi,yxj

  }
}

原始函数代码引用自链接:https://www.cnblogs.com/yxj0728/p/9281773.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值