scala闭包

代码示例:

  1. package test.close_pack
  2.  
  3. import scala.collection.mutable.ArrayBuffer
  4.  
  5. /**
  6. * AUTHOR Guozy
  7. * DATE 2019/6/1-14:44
  8. **/
  9. object F_clo {
  10. var votingName = "jack"
  11. val isOfVotingAge = (name: String) => {
  12. println(s"hello ${name},you name is ${votingName} when after change!!!")
  13. }
  14.  
  15. var fruits = ArrayBuffer[String]()
  16.  
  17. def addToBusk = (s: String) => {
  18. fruits += s
  19. println(fruits.mkString(","))
  20. }
  21. }

  

  1. package test.close_pack
  2.  
  3. import scala.collection.mutable.{ArrayBuffer, ListBuffer}
  4.  
  5. /**
  6. * AUTHOR Guozy
  7. * DATE 2019/6/1-14:43
  8. **/
  9. object Mains {
  10. def main(args: Array[String]): Unit = {
  11. F_clo.isOfVotingAge("Dany")
  12. F_clo.isOfVotingAge("mack")
  13. printResult(F_clo.isOfVotingAge, "kindy")
  14. F_clo.votingName = "Computer"
  15. printResult(F_clo.isOfVotingAge, "nick")
  16. println("-----------------------------------------")
  17. F_clo.addToBusk("apple")
  18. F_clo.addToBusk("bananal")
  19. buyStaf(F_clo.addToBusk, "water")
  20. F_clo.fruits = ArrayBuffer[String]()
  21. buyStaf(F_clo.addToBusk,"blue")
  22. buyStaf(F_clo.addToBusk,"yellow")
  23. }
  24.  
  25. def printResult(f: String => Unit, x: String): Unit = {
  26. f(x)
  27. }
  28.  
  29. def buyStaf(f: String => Unit, x: String) = {
  30. f(x)
  31. }
  32. }

 运行结果:

定义:

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

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

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

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

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

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

scala中的闭包的更多相关文章

  1. scala中的闭包简单使用

    object Closure { /** * scala中的闭包 * 函数在变量不处于其有效作用域内,还能够对变量进行访问 * * @param args */ def main(args: Arra ...

  2. scala中闭包的使用

    闭包的实质就是代码与用到的非局部变量的混合,即: 闭包 = 代码 + 用到的非局部变量 实例1: 匿名函数中引入闭包 val multiplier = (i:Int) => i * factor ...

  3. Scala:函数和闭包

    http://blog.csdn.net/pipisorry/article/details/52902271 Scala函数 Scala 有函数和方法,二者在语义上的区别很小.Scala 方法是类的 ...

  4. [转] Scala 中的异步事件处理

    在任何并发性应用程序中,异步事件处理都至关重要.无论事件的来源是什么(不同的计算任务.I/O 操作或与外部系统的交互),您的代码都必须跟踪事件,协调为响应它们而执行的操作.应用程序可以采用两种基本方法 ...

  5. Scala中的柯里化

    一.初识Currying柯里化   柯里化(Currying)技术 Christopher Strachey 以逻辑学家 Haskell Curry 命名的(尽管它是 Moses Schnfinkel ...

  6. Spark记录-Scala函数与闭包

    函数声明 Scala函数声明具有以下形式 - def functionName ([list of parameters]) : [return type] Scala 如果不使用等号和方法体,则隐式 ...

  7. scala中的高阶函数

    版权申明:转载请注明出处. 文章来源:http://bigdataer.net/?p=332 排版乱?请移步原文获得更好阅读体验 1.scala中的函数 scala是一门面向对象和函数式编程相结合的语 ...

  8. Scala基础:闭包、柯里化、隐式转换和隐式参数

    闭包,和js中的闭包一样,返回值依赖于声明在函数外部的一个或多个变量,那么这个函数就是闭包函数. val i: Int = 20 //函数func的方法体中使用了在func外部定义的变量 那func就 ...

  9. Scala中的函数表达式

    最近看Spark的东西,由于之前没有接触过lambda函数表达式,所以搜了点资料,特地纪录在此 Scala中的Lambda表达式 在函数式编程中,函数是基本的构造块.Scala融合了java中的面向对 ...

随机推荐

  1. C# 连接Excel,获取表格数据,获取多个sheet中的数据,获取多个sheet名

    /// <summary> /// 获取Excel内容. /// </summary> /// <param name="sheetName"> ...

  2. taro-安装及使用-npm

    taro-安装及使用 https://nervjs.github.io/taro/docs/GETTING-STARTED.html 安装 Taro 项目基于 node,请确保已具备较新的 node ...

  3. k8s集群的搭建之三:flannel

    一介绍 flannel是CoreOS提供用于解决Dokcer集群跨主机通讯的覆盖网络工具.它的主要思路是:预先留出一个网段,每个主机使用其中一部分,然后每个容器被分配不同的ip:让所有的容器认为大家在 ...

  4. 【leetcode】959. Regions Cut By Slashes

    题目如下: In a N x N grid composed of 1 x 1 squares, each 1 x 1 square consists of a /, \, or blank spac ...

  5. 「题解」:$Six$

    问题 A: Six 时间限制: 1 Sec  内存限制: 512 MB 题面 题面谢绝公开. 题解 来写一篇正经的题解. 每一个数对于答案的贡献与数本身无关,只与它包含了哪几个质因数有关. 所以考虑二 ...

  6. Sophus安装时Eigen库更新版本的问题

    原文链接:https://blog.csdn.net/m0_38055352/article/details/102900516

  7. Android Studio androidx 包冲突解决方法

    如果包冲突了会包如下这样的错: Android dependency 'androidx.core:core' has different version for the compile (1.0.0 ...

  8. c go数据类型对应关系

    DataType C cgo sizeof--------------------+--------------------+------------------------------------- ...

  9. 从客户端中检测到有潜在危险的 request.form值 以及 request.querystring[解决方法]

    一.从客户端中检测到有潜在危险的request.form值 当页面编辑或运行提交时,出现“从客户端中检测到有潜在危险的request.form值”问题,该怎么办呢?如下图所示: 下面博主汇总出现这种错 ...

  10. CentOS6 图形界面(gnome)安装

    CentOS6相对于CentOS5的安装有了不少的进步,有不少默认的选项可以选择,如: Desktop :基本的桌面系统,包括常用的桌面软件,如文档查看工具. Minimal Desktop :基本的 ...