`
wangcheng
  • 浏览: 1466974 次
  • 性别: Icon_minigender_1
  • 来自: 青岛人在北京
社区版块
存档分类
最新评论

闭包 closures

    博客分类:
  • java
阅读更多

闭包, 被这个词吸引, 是因为看到 Will we have closures in Java 1.7(Dolphin)?

下面是学习过程中所看文章的一些摘录

闭包是具有闭合作用域的匿名函数,是可以用作函数参数和方法参数的代码块。

Closure
    A "closure" is an expression (typically a function) that can have free variables together with an environment that binds those variables (that "closes" the expression).

闭包(Closures)和块(Blocks)的概念随着动态语言的发展而兴起。其实闭包的概念已经提出很长时间了,本质上来说,一个闭包是一块代码,它们能作为参数传递给一个方法调用。在Ruby等语言中,这是经常使用的功能。

You can approximate the functionality of closures in Java using anonymous inner classes.
可以使用匿名内部类来近似实现闭包功能。但匿名内部类只是宽泛地近似于闭包,它们并没有深入到您需要的程度。

如今,围绕是否将闭包纳入到java语言中存在极大的争议。有人认为,为了获得闭包的功能而破坏java简洁的语法糖是不值当的。而最近几年来,动态语言(如 Ruby、JavaScript)的流行使闭包纳入Java语言的支持之声日益高涨。从目前来看,Java 1.7(Dolphin)最终很可能会采纳闭包。

java 代码
  1. //Closures for Java    
  2.   
  3. int(int) plus2b = (int x) {return x+2; };   
  4.   
  5. int(int) plus2b = (int x) : x+2;   
  6.   
  7. void(intthrows InterruptedException closure = (int t) { Thread.sleep(t); }  

相关联接

http://www.ibm.com/developerworks/cn/java/j-cb01097.html

http://martinfowler.com/bliki/Closure.html

Closures for Java  http://blogs.sun.com/roller/resources/ahe/closures.pdf

 

分享到:
评论

相关推荐

    javascript 闭包

    JavaScript 闭包是一种重要的编程概念,它涉及到函数和作用域的深入理解。闭包的本质是函数内部能够访问并保持对外部变量的引用,即使在函数执行完毕后,这些变量仍然可被内部函数访问和操作。这使得闭包成为实现...

    scope-chains-closures, Javascript作用域链和闭包 workshop.zip

    scope-chains-closures, Javascript作用域链和闭包 workshop 范围链和闭包 workshop正在启动$ npm install -g scope-chains-closures$ scope-chains-closures # or, shorter: sccjs使用箭头

    Laravel开发-laravel-closures-container

    在Laravel框架中,`laravel-closures-container`是一个非常实用的特性,它允许开发者使用闭包(closures)作为服务容器中的绑定,从而实现更灵活、更动态的依赖注入。本文将深入探讨Laravel开发中的闭包容器及其应用...

    swift-Closures简洁直观的UIKit和Foundation封装库

    Swift中的Closures,也称为闭包,是编程语言中一种强大的功能,允许我们定义匿名函数,即没有名字的代码块,可以捕获和存储其所在上下文的引用。在iOS和macOS开发中,Swift的Closures常用于封装UIKit和Foundation...

    Swift视频教程 基础语法系列 挂尾闭包

    在这个“Swift视频教程 基础语法系列 挂尾闭包”中,我们将深入探讨挂尾闭包(Trailing Closures)这一关键特性,它是Swift语法中的一个重要组成部分,能帮助我们编写更加简洁和易读的代码。 挂尾闭包是Swift中一种...

    Mastering Ruby Closures

    《精通Ruby闭包》是Benjamin Tan Wei Hao撰写的一本指导书,旨在帮助读者深入了解Ruby编程语言中的闭包概念,包括块(Blocks)、Proc对象以及lambda表达式。本书着重介绍这些Ruby闭包的具体用途和行为,通过示例和...

    Analog一个基于闭包的微日志包

    它以其简洁、高效和可扩展性著称,尤其值得注意的是它对闭包(closures)的支持,这是一种在PHP中实现高阶函数的关键特性。 闭包在PHP中是一种能够捕获其所在上下文变量的匿名函数。Analog利用闭包允许开发者自定义...

    闭包:序列化闭包(匿名函数)

    Opis封闭可序列化的闭包Opis Closure是一个库,旨在通过提供使所有闭包可序列化的包装器来克服PHP在闭包序列化方面的限制。 该库的主要功能: 序列化任何关闭序列化任意对象不使用eval进行闭包序列化或反序列化可与...

    Advanced JavaScript (closures,prototype,inheritance)

    JavaScript,作为一种广泛应用于Web开发的脚本语言,其高级特性如闭包(closures)、原型(prototype)和继承(inheritance)是理解其精髓的关键。本文将深入探讨这些概念,帮助开发者更好地掌握JavaScript的核心。 ...

    closures:您不会相信这种重写闭包的怪异方法

    从头开始重写闭包和作用域规则。 完全使用JavaScript。 使用原型继承,可以从图形编程,记忆删除功能主体以及这一个怪异的全局变量中获得一些巧妙的技巧。 上有幻灯片将代码转换为无闭包等效项要将某些常规...

    Python学习之路——函数的闭包与装饰器

    在计算机科学中,闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭包(function closures),是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不...

    [Groovy入门]第五讲.将流程控制语句与方法重构为闭包

    此外,Groovy的`Closures`类提供了一些有用的方法,如`call`、`use`和`with`,帮助我们更好地利用闭包。例如,`use`方法可以确保资源在使用后正确关闭,这对于处理I/O操作特别有用: ```groovy new File('example....

    RWDevCon-Swift-Closures-Generics:我关于 Swift 闭包和泛型的 RWDevCon 演讲的源代码

    首先,让我们来了解一下闭包(Closures)。闭包是能够捕获和存储其所在上下文中自由变量的函数。简单来说,它就是一个可以携带自己环境的匿名函数。Swift中的闭包语法简洁,支持内联定义,可以作为参数传递,也可以...

    ios-三种类型的传值:协议,闭包,通知.zip

    2. **闭包(Closures)**: 闭包是Swift中的一个重要特性,它可以捕获并存储其所在上下文中的常量和变量。在值传递中,闭包可以作为一个参数传递,或者存储在一个属性中。这种方式使得函数或者方法能够访问并修改...

    Lua返回一个Closures函数实例

    在Lua中,闭包(Closures)是一种特殊的函数,它可以访问定义它的外部函数的局部变量。在给定的文件信息中,详细介绍了如何在Lua中返回一个闭包函数实例,并提供了相关的代码示例。 Lua中的闭包函数实例通常是指一...

    PHP匿名函数(闭包函数)详解

    在PHP中匿名函数(Anonymous functions),也叫闭包函数( closures ),允许临时创建一个没有指定名称的函数。经常用作回调函数(callback)的参数。 当然,也有其他应用的情况。 注:php闭包是PHP5.3版本之后才有...

    深入理解Swift语言中的闭包机制

    println("Welcome to Swift Closures") } welcomeClosure() ``` 闭包还可以接受参数并返回值,比如这个接收两个整数并返回它们商的闭包: ```swift let divide = {(val1: Int, val2: Int) -> Int in return val1...

    C# 中闭包(Closure)详解

    我发现,如果不用代码来演示,你很难单用话语把它解释清楚,所以,在这里,我打算用 C# 来解释一下什么是闭包(closures)。维基百科上说: 在计算机科学中,闭包(Closure)是词法闭包(Lexical Closure)的简称,...

Global site tag (gtag.js) - Google Analytics