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、一个闭包开始于一个函数以及定义在同一作用于的变量,然后它们彼此分开。当函数在某时刻被执行时,它仍然很神奇的知道早前引用的变量,甚至获得任何变量的修改
scala中的闭包的更多相关文章
- scala中的闭包简单使用
object Closure { /** * scala中的闭包 * 函数在变量不处于其有效作用域内,还能够对变量进行访问 * * @param args */ def main(args: Arra ...
- scala中闭包的使用
闭包的实质就是代码与用到的非局部变量的混合,即: 闭包 = 代码 + 用到的非局部变量 实例1: 匿名函数中引入闭包 val multiplier = (i:Int) => i * factor ...
- Scala:函数和闭包
http://blog.csdn.net/pipisorry/article/details/52902271 Scala函数 Scala 有函数和方法,二者在语义上的区别很小.Scala 方法是类的 ...
- [转] Scala 中的异步事件处理
在任何并发性应用程序中,异步事件处理都至关重要.无论事件的来源是什么(不同的计算任务.I/O 操作或与外部系统的交互),您的代码都必须跟踪事件,协调为响应它们而执行的操作.应用程序可以采用两种基本方法 ...
- Scala中的柯里化
一.初识Currying柯里化 柯里化(Currying)技术 Christopher Strachey 以逻辑学家 Haskell Curry 命名的(尽管它是 Moses Schnfinkel ...
- Spark记录-Scala函数与闭包
函数声明 Scala函数声明具有以下形式 - def functionName ([list of parameters]) : [return type] Scala 如果不使用等号和方法体,则隐式 ...
- scala中的高阶函数
版权申明:转载请注明出处. 文章来源:http://bigdataer.net/?p=332 排版乱?请移步原文获得更好阅读体验 1.scala中的函数 scala是一门面向对象和函数式编程相结合的语 ...
- Scala基础:闭包、柯里化、隐式转换和隐式参数
闭包,和js中的闭包一样,返回值依赖于声明在函数外部的一个或多个变量,那么这个函数就是闭包函数. val i: Int = 20 //函数func的方法体中使用了在func外部定义的变量 那func就 ...
- Scala中的函数表达式
最近看Spark的东西,由于之前没有接触过lambda函数表达式,所以搜了点资料,特地纪录在此 Scala中的Lambda表达式 在函数式编程中,函数是基本的构造块.Scala融合了java中的面向对 ...
随机推荐
- java获取网页源代码并写入本地文件中
import java.io.*; import java.net.*; public class URLDemo { public static void main(String args[]){ ...
- HTML + CSS (下)【更新中】
弹性盒子: 定义:弹性盒子模型是css3中新提出的一种布局方案.是一种为了应对针对不同屏幕宽度不同设备的一整套新的布局方案. 主要是对一个容器中的子元素进行排列.对齐和分配空白空间的方案的调整. 新旧 ...
- SVN版本管理与大型代码上线方案(一)
SVN版本管理与大型代码上线方案(一) 链接:https://pan.baidu.com/s/1A3Iq3gGkGS27L_Gt37_I0g 提取码:ncy2 复制这段内容后打开百度网盘手机App,操 ...
- HTTP、HTTPS等常用服务的默认端口号
口号标识了一个主机上进行通信的不同的应用程序. 1.HTTP协议代理服务器常用端口号:80/8080/3128/8081/9098 2.SOCKS代理协议服务器常用端口号:1080 3.FTP(文件传 ...
- 笔记60 Spring+Mybatis整合
整合思路:将SessionFactory交给Spring管理,并且把Mapper和XML结合起来使用. 一.目录结构 二.基本的pojo Category.java package com.pojo; ...
- list去重jdk1.8
List<Object> newList = ll.stream().distinct().collect(Collectors.toList()); //jdk8去重操作
- H5新属性 contenteditable
contenteditable 属性规定元素内容是否可编辑 <div contenteditable style="width: 100px;height:100px"> ...
- JMeter目录结构
转载自https://www.cnblogs.com/imyalost/p/6959797.html 首先得了解一下这些东西,以后才能快速的找到某些配置文件进行修改(举个例子,改配置只是其中之一) 一 ...
- 【Dart学习】-- Dart之异常处理
概述: Dart2的异常与Java是非常类似的.Dart2的异常是Exception或者Error(包括它们的子类)的类型,甚至可以是非Exception或者Error类,也可以抛出,但是不建议这么使 ...
- stm32 hal库串口通信资料汇集
串口的发送接收函数:HAL_UART_Transmit();串口轮询模式发送,使用超时管理机制.HAL_UART_Receive();串口轮询模式发送,使用超时管理机制.HAL_UART_Transm ...