十一.Scala 闭包
来源:互联网 发布:word数据导入excel中 编辑:程序博客网 时间:2024/06/06 07:58
Scala 闭包
闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。
闭包通常来讲可以简单的认为是可以访问一个函数里面局部变量的另外一个函数。
如下面这段匿名的函数:
val multiplier = (i:Int) => i * 10
函数体内有一个变量 i,它作为函数的一个参数。如下面的另一段代码:
val multiplier = (i:Int) => i * factor
在 multiplier 中有两个变量:i 和 factor。其中的一个 i 是函数的形式参数,在 multiplier 函数被调用时,i 被赋予一个新的值。然而,factor不是形式参数,而是自由变量,考虑下面代码:
var factor = 3 val multiplier = (i:Int) => i * factor
这里我们引入一个自由变量 factor,这个变量定义在函数外面。
这样定义的函数变量 multiplier 成为一个”闭包”,因为它引用到函数外面定义的变量,定义这个函数的过程是将这个自由变量捕获而构成一个封闭的函数。
完整实例
itlocals-MacBook-Pro:function david.tian$ vim TestClosure.scalaobject TestClosure{ def main(args: Array[String]){ println("multiplier(1) value = " + multiplier(1)) println("multiplier(2) value = " + multiplier(2)) } var factor = 3 val multiplier = (i:Int) => i*factor}itlocals-MacBook-Pro:function david.tian$ scalac TestClosure.scala itlocals-MacBook-Pro:function david.tian$ scala TestClosuremultiplier(1) value = 3multiplier(2) value = 6
0 0
- 十一.Scala 闭包
- scala闭包
- Scala闭包
- scala 闭包
- Scala中的闭包
- Scala 闭包
- Scala 闭包
- Scala闭包
- scala闭包
- Scala 闭包
- scala 闭包
- Scala 闭包
- scala 函数闭包
- scala之闭包
- Scala 闭包
- scala的闭包
- scala闭包
- scala闭包
- SQL Server 表变量和临时表的区别
- 身份证号码的正则验证
- 基于卷积神经网络(CNN)的中文垃圾邮件检测
- python仿Linux下的实时进度条
- 卷积的本质及物理意义
- 十一.Scala 闭包
- 初探rtmpdump
- javaweb实现文件上传下载
- 389. Find the Difference
- hdu2767 等价性证明(求强连通分量缩点后的出度和入度为0的个数)
- 堆排序
- XAMPP的安装及端口冲突
- 排序算法(三):计数排序与桶排序
- grails 一对多级联删除