文档章节

Scala Closures 闭包

blue1110
 blue1110
发布于 2015/01/20 18:27
字数 210
阅读 49
收藏 1

 

closure is a function, whose return value depends on the value of one or more variables declared outside this function.

闭包是指那些返回的值依赖于声明在此函数之外的函数。

闭包是一种函数,它的返回值依赖于定义于该函数之外的一到多个变量

例子如下:

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

这里面有两个自由变量Free Values,i还有factor,自由变量不在函数体内被绑定。

在这个例子中,factor在函数体外被赋值。

调用:

println( "muliplier(1) value = " +  multiplier(1) )
println( "muliplier(2) value = " +  multiplier(2) )

这些闭包函数实际上是以类的对象方式实现的。该类有一个实例变量factor和一个包含了函数体的apply方法。


when to user closures?

http://stackoverflow.com/questions/6427811/when-to-use-closures

全文结束。

© 著作权归作者所有

blue1110
粉丝 8
博文 13
码字总数 7360
作品 0
南京
程序员
私信 提问
加载中

评论(2)

blue1110
blue1110 博主

引用来自“niubo_”的评论

闭包是一种函数,它的返回值依赖于定义于该函数之外的一到多个变量
说的不错,我就说为啥我翻译的中文那么拗口呢。借用下~
niubo_
niubo_
闭包是一种函数,它的返回值依赖于定义于该函数之外的一到多个变量
Closures “闭包”的概念

最近在看Scala书,里面有提到的闭包这一词,Java目前是不支持闭包的,但 JDK 7 将会支持,详情请看这里。 下面是来自百度百科上对“闭包”一次的解释: 闭包是可以包含自由(未绑定)变量的代...

红薯
2010/12/07
521
5
编程语言 Scala 2.12.0-M1 发布

Scala 2.12.0-M1 发布,Scala 2.12 系列的目标是 Java 8。 下载:scala-lang.org Maven Central Scala 2.12 改进计划: Java 8 style closures. Lambda syntax for SAM types New backend a......

oschina
2015/05/10
2.7K
16
理解并解决IE的内存泄漏方式[翻译2]

大家节日快乐!俺就继续这个IE内存泄漏的主题来作为节日礼物了,并且相当欢迎大家来一起讨论。这一节讲Closures引起的内存泄漏,最后我还是决定把Closures翻译成了闭包或闭包函数。而且又在K...

唐玄奘
2017/12/12
0
0
javascript 闭包(CLOSURES)详解

javascript 闭包(CLOSURES)详解 知行合一,止于至善2018-01-091 阅读 WEB开发 如下代码,摘录自javascript高级编程 createComparisonFunction函数返回一个比较对象指定属性的匿名函数。该匿名...

知行合一,止于至善
2018/01/09
0
0
JavaScript Closures

JavaScript Closures Closures Scope chain 从这个示例中可以看到inner()函数可以访问到所有的变量,这就是作用域链的效果。 Breaking the chain with a closure The function N has access ...

秋风醉了
2015/04/18
70
0

没有更多内容

加载失败,请刷新页面

加载更多

RxJava进行单元测试的方式

@Test public void completeTask_retrievedTaskIsComplete() { // Given a new task in the persistent repository final Task newTask = new Task(TITLE, ""); ......

SuShine
32分钟前
5
0
正则表达式大全

检验手机号码 # 要求:手机号码必须为11位数字,以1开头,第二位为1或5或8。import redef verify_mobile(): mob = input("请输入手机号码:") ret = re.match(r"1[358]\d{9}", m......

彩色泡泡糖
36分钟前
5
0
QT之border-image属性

一、border-image的兼容性 border-image可以说是CSS3中的一员大将,将来一定会大放光彩,其应用潜力真的是非常的惊人。可惜目前支持的浏览器有限,仅Firefox3.5,chrome浏览器,Safari3+支持...

shzwork
37分钟前
6
0
Kubernetes Operator简易教程

1. 安装operator-sdk //安装 operator-sdk$ apt-get install operator-sdk.....$ operator-sdk versionoperator-sdk version: v0.7.0$ go versiongo version go1.11.4 darwin/amd64 2......

Robotcl_Blog
37分钟前
5
0
再谈DAG任务分解和Shuffle RDD

1、DagScheduler分析 DagScheduler功能主要是负责RDD的各个stage的分解和任务提交。Stage分解是从触发任务调度过程的finalStage开始倒推寻找父stage,如果父stage没有提交任务则循环提交缺失...

守望者之父
43分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部