论坛首页 海阔天空版 IT八卦

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

浏览 3803 次
精华帖 (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 请登录后投票
论坛首页 海阔天空版 IT八卦

跳转论坛:
JavaEye推荐