现在所有的人都在谈论着closures,谈论着如何将它加入到Java spec里.每个人都有自己的观点...上至官方,下至草根.... 已经达成一致意见的声明发布了又被驳倒,这些致使closures成为这些年讨论的最多的Java话题.
甚至有很多经验丰富的Java开发人员都在想closures是什么? Brian Goetz, of Sun Microsystems, 写了一篇很棒的文章: overview of closures and talks about the proposals in front of the JCP. 简言之,(下面是由 docman.cn 翻译家 提供的翻译)
一个闭包是一个包含若干自由变量的代码块;这些变量不用在代码块或者任何全局上下文中定义,而是在定义这个代码块的环境中定义 "closure"的名字来自于它们是代码块的组合,而这些代码块相对于变量引用语法来说不是闭合的,其中的变量是自由变量,这些代码在运算环境(作用域)中被执行,自由变量在环境中被绑定值.
目前来说,最类似的事就是JAVA对匿名类的支持了 增加闭包功能对于用类似JAVA这种强类型语言进行系统设计的改变意义重大,因为类型不仅指的是类和基本类型,还要表示代码
Smalltalk, Scheme, Ruby 以及其他语言都首选通闭包使函数成为很棒的对象. 函数能被储存在变量中,并且可以作为参数传递给其他函数,可以动态的创建以及从其他函数返回。 解决这个问题并非很容易,现在至少有两种提案 包括 Concise Instance Creation Expressions and BGGA Nominal Closures.
根据Neal Gafter(the Nominal Closures提议的合著人)的说法, 方案已经达成共识,--尽管在发表这篇文章时,还没有第三方肯定这种说法.
你认为如何? 这些提议会被认定吗? 意见真的达成一致了吗?还是BGGA人过分乐观了!
分享到:
相关推荐
本书《Apress - Java Closures and Lambda》聚焦于Java 8中的新特性——闭包(Closures)和Lambda表达式。这些新功能不仅为Java语言带来了函数式编程的能力,还极大地提高了代码的可读性和维护性。本书通过深入浅出...
在 "Closures-for-Java" 库中,这可能需要创建一个闭包对象来表示过滤条件,然后调用相应的操作: ```java List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); List<Integer> evenNumbers = new FilterClosure...
此外,这部分可能会解释Lambda表达式背后的闭包(closures)概念,以及Lambda如何捕获外围作用域中的变量。 在“Advanced Lambdas”章节,作者可能会讨论Lambda表达式的高级用法,包括方法引用(method references...
此外,Groovy的`Closures`类提供了一些有用的方法,如`call`、`use`和`with`,帮助我们更好地利用闭包。例如,`use`方法可以确保资源在使用后正确关闭,这对于处理I/O操作特别有用: ```groovy new File('example....
4. **闭包(Closures)**:Groovy中的闭包是其核心特性之一,类似于函数引用,可以作为参数传递,也可以作为返回值。闭包在处理集合操作时特别有用,如`each`和`collect`等。 5. **GDK (Groovy Development Kit)**...
2017年java源码Python中的闭包 这是在PyCon SK 2017上提供的Closures in Python对话Closures in Python支持材料。 谈话的目的是向观众介绍一般的封闭剂。 演示还包括来自其他语言(例如Java,C#或Javascript)的...
Java闭包和Lambda Java-8-Lambdas Java 9语言功能,第二版 而且因为我喜欢TDD,所以每一个练习都从使用JUnit4进行测试开始,在如此极端的水平上,有些练习比仅包含测试要多。 内容 Lambdas 目标键入功能接口方法...
- Lambda表达式和闭包(Lambdas and Closures):Lambda表达式提供了一种简洁的表示匿名函数的方法。闭包是引用了自由变量的函数,即使创建闭包的上下文已经不再存在,闭包依然可以使用这些自由变量。 - 高阶函数...
例如,` closures`(闭包)是Groovy的一个强大特性,它可以作为可执行代码块,像方法一样传递和执行,还能访问和修改作用域内的变量值。 Grails框架的架构主要分为三层:视图层、业务逻辑层和持久层。视图层由GSP...
JDK 7作为Java发展的一个重要里程碑,引入了多个重要的新特性,包括Project Coin(语言特性的改进)、Modularity(模块化系统,即Jigsaw项目)以及Closures(闭包支持)。这些新特性不仅提高了开发效率,还为Java...
- **语法特性**:Go语言的设计简洁,其语法特性如goroutines(轻量级线程)、channels(通信机制)和closures(闭包)是其独特之处。 - **并发编程**:Go通过goroutines和channels实现了高效的并发模型,这是它在...
亚信java笔试题 ##说说你对闭包的理解 ##Talk about your understanding of closures 使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用...
6. **闭包(Closures)** - 闭包是JavaScript中一种强大的特性,允许函数访问和操作其外部作用域的变量,即使在其外部作用域已经结束时。 7. **异步编程(Async Programming)** - 通过回调函数、Promise、async/...
4. **闭包(Closures)**:闭包是具有自由变量的函数,这些变量可以在函数定义的外部被访问。Java 8的Lambda表达式本质上就是闭包。 5. **函数组合(Composition)**:通过将小型、简单的函数组合起来,构建复杂的逻辑...
通过对比Java,Groovy提供了更为简洁的语法,例如闭包(closures)的使用,使得代码更加优雅和易于理解。 #### 2. 面向对象编程在Groovy中的应用 Groovy继承了Java的面向对象特性,但又在此基础上进行了扩展和改进。...
- **Closures(闭包)**:闭包是Groovy中的一个重要概念,它是可以被赋值、传递和存储的代码块。闭包可以捕获其定义时的上下文,使得它可以访问和修改外部变量。在Groovy中,`each`方法通常与闭包一起使用来迭代集合...
Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它与Java语言无缝集成,同时提供了动态语言的许多特性,例如动态类型、闭包(closures)和元编程等。它由James Strachan于2003年首次提出,并迅速受到了社区的...
此外,Groovy还提供了其他一些特性,如闭包(Closures)、列表和映射的简洁操作、以及对Java集合库的增强。闭包是Groovy中的一个重要概念,它类似于匿名函数,可以作为参数传递,增强了代码的可读性和可维护性。 ...
1. **闭包(Closures)**:JavaScript中的闭包是函数和其相关的引用环境组合而成的实体,它可以访问并操作外部作用域的变量,即使在其外部作用域已经销毁的情况下。理解闭包对于优化内存管理和创建私有变量至关重要...
闭包(closures)是Groovy中非常重要的一个概念,闭包是一种可以作为参数传递、可以从其被定义的作用域外调用的代码块。Groovy的闭包提供了非常强大的功能,比如高阶函数的能力,它们可以用来实现迭代、排序和其他...