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

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. 移动端(视口(meta),像素比,二倍图(图片,背景图,精灵图),css初始化(normalize.css),特殊样式,常见屏幕尺寸)

    1. 视口:(布局视口(layout viewport),视觉视口(visual viewport),理想视口(ideal viewport)) meta 视口标签 <meta  name = ...

  2. 前端用vue,后端需要nodejs吗?

    其实用脚趾头想想也知道:后端用不用node,和前端用不用vue,二者完全没关系. 那为何用vue和vue插件开发前端的时候,经常需要各种npm install呢?为何要在本地安装node环境? 本地需 ...

  3. cocos2D-X Download

    { http://cocos2d-x.org/download https://github.com/cocos2d/cocos2d-x https://github.com/fusijie/Coco ...

  4. 【Linux】windows下编写的脚本文件,放到Linux中无法识别格式

    注意:我启动的时候遇到脚本错误 » sh startup.sh -m standalone tanghuang@bogon : command not found : command not foun ...

  5. 【LeetCode 10】正则表达式匹配

    题目链接 [题解] 看到这个题解 写的代码. 就是加个备忘录法.优化一下暴力的做法. 匹配的时候如果遇到号的话,就两种可能.不再考虑它前面一个字符了. 跳过这个或者.或者继续用前面那个字符匹配. 即d ...

  6. mui-scroll-wrapper mui-scroll 内容增多不出滚动条

    滚动条需要初始化 mui('.mui-scroll-wrapper').scroll({});

  7. 微信中location.reload失效

    var len = window.location.href.indexOf("?"); if(len>0){     window.location.href=window ...

  8. json格式化在线工具推荐

    现在系统对接基本都采用json格式的报文,杂乱无章的json让人看起来头大,这里推荐一款在线格式化json的工具, 工具地址: http://www.matools.com/json 这个在线Json ...

  9. ()centos7 安装mysql8.0

    一.下载mysql 1 .下载 https://dev.mysql.com/downloads/repo/yum/ wget http://repo.mysql.com/mysql80-communi ...

  10. Display与 Visibility的区别

    隐藏元素的方法有: display:none或visibility:hidden visibility:hidden可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间.也就是说,该元素虽然被 ...