zoukankan      html  css  js  c++  java
  • scala中的闭包

    scala闭包

    代码示例:

    package test.close_pack
    
    import scala.collection.mutable.ArrayBuffer
    
    /**
      * AUTHOR Guozy
      * DATE   2019/6/1-14:44
      **/
    object F_clo {
      var votingName = "jack"
      val isOfVotingAge = (name: String) => {
        println(s"hello ${name},you name is ${votingName} when after change!!!")
      }
    
      var fruits = ArrayBuffer[String]()
    
      def addToBusk = (s: String) => {
        fruits += s
        println(fruits.mkString(","))
      }
    }
    

      

    package test.close_pack
    
    import scala.collection.mutable.{ArrayBuffer, ListBuffer}
    
    /**
      * AUTHOR Guozy
      * DATE   2019/6/1-14:43
      **/
    object Mains {
      def main(args: Array[String]): Unit = {
        F_clo.isOfVotingAge("Dany")
        F_clo.isOfVotingAge("mack")
        printResult(F_clo.isOfVotingAge, "kindy")
        F_clo.votingName = "Computer"
        printResult(F_clo.isOfVotingAge, "nick")
        println("-----------------------------------------")
        F_clo.addToBusk("apple")
        F_clo.addToBusk("bananal")
        buyStaf(F_clo.addToBusk, "water")
        F_clo.fruits = ArrayBuffer[String]()
        buyStaf(F_clo.addToBusk,"blue")
        buyStaf(F_clo.addToBusk,"yellow")
      }
    
      def printResult(f: String => Unit, x: String): Unit = {
        f(x)
      }
    
      def buyStaf(f: String => Unit, x: String) = {
        f(x)
      }
    }
    

     运行结果:

    定义:

      1、所谓的闭包,即一个函数与一个与该函数引用的非局部变量引用环境,闭包允许函数直接访问直接语法作用于之外的变量。

      2、闭包是满足下面三个条件的一段代码块:

        a.代码块可以当做值来传递

        b.同时可以被任何拥有改制的对象按需执行

        c.可以引用上下稳重已经创建的变量

      3、一个闭包开始于一个函数以及定义在同一作用于的变量,然后它们彼此分开。当函数在某时刻被执行时,它仍然很神奇的知道早前引用的变量,甚至获得任何变量的修改

  • 相关阅读:
    8.图形软件开发
    7.GDI绘图技术
    15.MFC网络通信
    JavaWeb:基于MVC设计模式的一个小案例(一)
    在虚拟机里连接PLC S7-200
    mark-又重新回到博客园
    早起的奇迹
    STM32-cJSON库的打包和解析
    Copley-STM32串口+CANopen实现双电机力矩同步
    DataStructure-链表实现指数非递减一元多项式的求和
  • 原文地址:https://www.cnblogs.com/Gxiaobai/p/10959848.html
Copyright © 2011-2022 走看看