每天学一点Scala之 闭包
admin
2023-03-16 10:01:17
0
  1. 定义

函数在变量不处于其有效作用域时,还能够对变量进行访问,即为闭包;也就是说,变量超出了其作用域,还可以使用,就是闭包现象。

  1. 可能针对的使用场景之一?

比方说,年底了,公司针对每个部门的奖金是不同。比方说,销售部门奖金为10000,研发部门是15000,测试部门12000等,就可以使用闭包来实现

例子,如下:

object BiBaoTest {
   def main(args: Array[String]): Unit = {
      val salesDepartment = add(10000) //变量salesDepartment相等于一个匿名函数,wages + 10000
      
      println("---->:\t" + salesDepartment(10)) //为销售部门的某一个员工发工资,基本工资是10
      
      val rDdepartment = add(15000) //变量rDdepartment相等于一个匿名函数,wages + 15000
      
      println("---->:\t" + rDdepartment(100))
      
      val testDepartment = add(12000) //变量testDepartment相等于一个匿名函数,wages + 12000
      
      println("---->:\t" + testDepartment(10))
   }
   
   def add(bonus: Int) = (wages: Int) => wages + bonus //bonus,这种形式就是闭包现象
}

或者这样理解,闭包,是具有某种规律的匿名函数的,更高层次的抽象,

如:

(x: Int) => x + 1

(x: Int) => x + 14

(x: Int) => x + 3

(x: Int) => x + 9

(x: Int) => x + 7

(x: Int) => x + 10

(x: Int) => x + 100

...

这种匿名函数,结构上,很相似,整体是累加运算,因此,可以抽象成

def add(y: Int) = (x: Int)=> x + y

这种形式


也就是说,传入的y值不同,就会返回不同的匿名函数




相关内容

热门资讯

【第一消息】“小茶馆.开挂器?... 网上科普关于“小茶馆有没有挂”话题很是火热,小编也是针对小茶馆作*弊开挂的方法以及开挂对应的知识点,...
今日重大发现“九九山城麻将.究... 有 亲,根据资深记者爆料九九山城麻将是可以开挂的,确实有挂(咨询软件无需...
最新引进“老友十三水.有挂吗?... 网上科普关于“老友十三水有没有挂”话题很是火热,小编也是针对老友十三水作*弊开挂的方法以及开挂对应的...
玩家最新攻略“八闽福建麻将.辅... 您好:八闽福建麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款...
【今日要闻】“湖北云雀麻将.辅... 有 亲,根据资深记者爆料湖北云雀麻将是可以开挂的,确实有挂(咨询软件无需...
今日重大通报“天天微友.有挂吗... 您好:天天微友这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游戏...
玩家分享攻略“微乐捉鸡麻将.究... 网上科普关于“微乐捉鸡麻将有没有挂”话题很是火热,小编也是针对微乐捉鸡麻将作*弊开挂的方法以及开挂对...
今日重磅消息“想游中心五.究竟... 您好:想游中心五这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游...
终于明白“神赚棋牌.开挂器?”... 终于明白“神赚棋牌.开挂器?”必胜开挂神器您好,神赚棋牌这个游戏其实有挂的,确实是有挂的,需要了解加...
柯建铭自爆常跟赖清德报告“大罢... 海峡导报综合报道 民进党今年“7·26”“8·23”两次“大罢免”遭遇滑铁卢,作为发起人的台民意机构...