美文网首页
Scala编程基础13:Scala闭包

Scala编程基础13:Scala闭包

作者: 金字塔下的小蜗牛 | 来源:发表于2020-04-08 08:16 被阅读0次

闭包是一个函数,返回值依赖于声明在函数外部的一个或者多个变量。闭包通常来讲可以简单的认为是可以访问一个函数里面的局部变量的另外一个函数。如下面这个匿名函数:

val multiplier = (i:Int)=>i*10

函数体内有一个变量i,它作为函数的一个参数。如下的另外一段代码:

val multiplier = (i:Int)=>i*factor

在multiplier中有两个变量:i和factor。其中i是函数的形式参数,在multiplier函数被调用时,i被赋予一个新的值。然而,factor不是形式参数,而是自由变量,考虑下面的代码:

val factor = 3;
val multiplier = (i:Int)=>i*factor

这里我们引入一个自由变量factor,这个变量定义在函数外面。这样定义的函数变量multiplier成为一个闭包,因为它引用到函数外面定义的变量,定义这个函数的过程是将这个自由变量捕获而构成一个封闭的函数。

下面是一个完整的实例:

object Test1 {
    def main(args:Array[String]){
        println("multiplier(1) value = "+multiplier(1));
        println("multiplier(2) value = "+multiplier(2));
    }
    var factor = 3;
    var multiplier = (i:Int)=>i*factor;
}

编译并执行以上代码,输出结果如下:

E:\Scala>scalac Test1.scala
E:\Scala>scala Test1
multiplier(1) value = 3
multiplier(2) value = 6

相关文章

  • Scala编程基础13:Scala闭包

    闭包是一个函数,返回值依赖于声明在函数外部的一个或者多个变量。闭包通常来讲可以简单的认为是可以访问一个函数里面的局...

  • Scala函数式编程(三) scala集合和函数

    前情提要: scala函数式编程(二) scala基础语法介绍 scala函数式编程(二) scala基础语法介绍...

  • Scala函数式编程(四)函数式的数据结构 下

    前情提要 Scala函数式编程指南(一) 函数式思想介绍 scala函数式编程(二) scala基础语法介绍 Sc...

  • Scala函数式编程(五) 函数式的错误处理

    前情提要 Scala函数式编程指南(一) 函数式思想介绍 scala函数式编程(二) scala基础语法介绍 Sc...

  • Scala系列文章目录

    Scala(三)-①-函数式编程和异常 Scala(四)-①-面相对象初级 Scala(四)-②-面相对象中级-包...

  • 深入理解 Scala 中的闭包(Closures)

    摘要 本文通过 Scala 语言来实现一个简单的闭包,并且通过 Opcode 来深入理解 Scala 中闭包的实现...

  • 第三讲函数详解

    Scala被认为是函数式编程语言,故Scala函数是Scala编程的核心。所以掌握scala的函数至关重要。 本章...

  • Scala基础

    Scala概述 Scala设计的目的是整合面向对象编程和函数式编程。Scala运行于Java平台(JVM),并兼容...

  • Scala中闭包

    在Scala中,函数引入传入的参数是再正常不过的事情了,比如(x: Int) => x > 0中,唯一在函数体x ...

  • scala闭包函数

    闭包是一个函数,它返回值取决于在此函数之外声明的一个或多个变量的值。 以下代码是一个匿名函数。 val m=(i:...

网友评论

      本文标题:Scala编程基础13:Scala闭包

      本文链接:https://www.haomeiwen.com/subject/lkskdhtx.html