Scala闭包
2015-01-13 18:13
120 查看
闭包(Closure)是引用了自由变量的函数,它的返回值依赖于这个函数外部的一个或者多个变量。
闭包本身类,它的特点是它所创建的对象实例可以引用外部函数/类里面的变量。 即闭包就是能够读取外部函数的内部变量的函数。
如下面这段匿名的函数:
闭包本身类,它的特点是它所创建的对象实例可以引用外部函数/类里面的变量。 即闭包就是能够读取外部函数的内部变量的函数。
如下面这段匿名的函数:
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 * factorfactor有一个在函数的外边的变量的引用,但是在一个封闭的作用域内。如下边示例:
object Test {当以上代码被编译执行后,产生如下结果:
def main(args: Array[String]) {
println( "muliplier(1) value = " + multiplier(1) )
println( "muliplier(2) value = " + multiplier(2) )
}
var factor = 3 val multiplier = (i:Int) => i * factor
}
C:/>scalac Test.scala C:/>scala Test muliplier(1) value = 3 muliplier(2) value = 6上面的函数引用了factor,并每次读取它当前的值。如果一个函数没有外部变量,那么它就平凡地被封闭,不需要外部环境。
相关文章推荐
- Scala中的闭包
- scala闭包与柯里化
- scala学习之偏函数与闭包
- Scala教程(十)函数与闭包详解
- Scala学习笔记16【Scala闭包代码实例】
- Scala学习之函数和闭包
- Scala入门到精通——第五节 函数、高阶函数与闭包
- scala闭包
- Scala 闭包
- scala第九讲:函数和闭包
- Scala闭包
- scala学习笔记(6):闭包
- Scala 中闭包的概念
- Scala高阶函数、闭包、柯里化
- Scala学习笔记——函数和闭包
- Scala深入浅出实战经典:22,Scala中的闭包实战详解
- scala--函数和闭包
- python 本地变量和全局变量 locals() globals() global nonlocal 闭包 以及和 scala 闭包的区别
- Scala入门到精通——第五节 函数与闭包
- Scala 闭包