论坛首页 海阔天空论坛

我们真的需要Java Closures(闭包)吗?

浏览 7297 次
精华帖 (0) :: 良好帖 (0) :: 灌水帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-15  

 现在所有的人都在谈论着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人过分乐观了!

   发表时间:2007-05-15  
看了下讨论中的语法,相比于动态语言的简洁,实在是很丑陋!-_-
0 请登录后投票
   发表时间:2007-05-15  
有几句是我翻译的 嘿嘿
0 请登录后投票
   发表时间:2007-05-15  
希望JAVA不要往丑陋的方向变.
简洁点...
0 请登录后投票
   发表时间:2007-05-15  
<  K,V,  throws   X  >
void   for  eachEntry(Map < K,V >  map, {K,V => void   throws  X} block)
         throws  X {
     for  (Map.Entry < K,V >  entry : map.entrySet()) {
        block.invoke(entry.getKey(), entry.getValue());
    }
}

看看java 7的代码,简直无语.
0 请登录后投票
   发表时间:2007-05-15  
说实话,其实在出java tiger的时候,我就觉得java有往丑陋方向演化的倾向...现在...个人觉得,果不其然.看来可以换个方向了.
0 请登录后投票
   发表时间:2007-05-15  
看看python,ruby的代码,再看看java的代码,唉。
0 请登录后投票
   发表时间:2007-05-15  
hurricane1026 写道
simohayha 写道
看看python,ruby的代码,再看看java的代码,唉。

和最最丑陋的c++的一堆Template。。。。比起来都差不多了。。。。
btw:我还是觉得那个黑眼镜图片比较酷...
0 请登录后投票
   发表时间:2007-05-15  
Norther 写道
有几句是我翻译的 嘿嘿


好像大部分都是你翻译的!
0 请登录后投票
   发表时间:2007-05-15  
确实有点繁琐了,从JAVA刚诞生时的相对于C++的简洁到现在,几乎从一个极端走向另一个极端,应该大改一下了,否则。。。期待JAVA8.。
0 请登录后投票
论坛首页 海阔天空版

跳转论坛:
Global site tag (gtag.js) - Google Analytics