scala中闭包

本文深入探讨了闭包的概念,通过案例解释了闭包如何在函数内部引用外部变量,并展示了闭包在实际编程中的应用。示例中,`makeSuffix`函数返回一个闭包,用于检查文件名是否具有指定后缀,如无则添加。闭包的好处在于它可以记住外部环境的值,避免重复传入参数。
摘要由CSDN通过智能技术生成

基本介绍
基本介绍:闭包就是一个函数和与其相关的引用环境组合的一个整体(实体)。
在这里插入图片描述

案例演示
//1.用等价理解方式改写 2.对象属性理解

def minusxy(x: Int) = (y: Int) => x - y 
//f函数就是闭包. 
val f = minusxy(20) 
println("f(1)=" + f(1)) // 19 
println("f(2)=" + f(2)) // 18

代码小结

  1. 第1点
    (y: Int) => x – y
    返回的是一个匿名函数 ,因为该函数引用到到函数外的 x,那么 该函数和x整体形成 一个闭包
    如:这里 val f = minusxy(20) 的f函数就是闭包
  2. 你可以这样理解,返回函数是一个对象,而x就是该对象的一个字段,他们共同 形成一个闭包
  3. 当多次调用f时(可以理解多次调用闭包),发现使用的是同一个x, 所以x不变。
  4. 在使用闭包时,主要搞清楚返回函数引用了函数外的哪些变量,因为他们会组合 成一个整体(实体),形成一个闭包

闭包的最佳实践
请编写一个程序,具体要求如下

  1. 编写一个函数 makeSuffix(suffix: String) 可以接收一个文件后缀名(比如.jpg),并返 回一个闭包
  2. 调用闭包,可以传入一个文件名,如果该文件名没有指定的后缀(比如.jpg) ,则返 回 文件名.jpg , 如果已经有.jpg后缀,则返回原文件名。
  3. 要求使用闭包的方式完成
  4. String.endsWith(xx)

体会闭包的好处

1)返回的匿名函数和 makeSuffix (suffix string) 的 suffix 变量 组合成一个闭包,因 为 返回的函数引用到suffix这个变量

2)我们体会一下闭包的好处,如果使用传统的方法,也可以轻松实现这个功能, 但是传统方法需要每次都传入 后缀名,比如 .jpg ,而闭包因为可以保留上次引 用的某个值,所以我们传入一次就可以反复使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值