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

评论
realdah 2007-08-31
不是有reflection了么。。。-__-!

要不java以后再搞点预编译宏,搞点全局函数和全局变量好了。。
和C++没啥区别了都。。。
realzhang 2007-08-30
hamlet 写道
倒是蛮像动态语言的,特别像perl

我用了很多年perl了,怎么看不出?你说说哪里像?
hamlet 2007-08-30
倒是蛮像动态语言的,特别像perl
hpq852 2007-08-29
Java1.4 + Groovy
charon 2007-08-29
xly_971223 写道
simohayha 写道
<  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的代码,简直无语.

火星语言!


这个比较强。就是太罗嗦。但是比以前要干净明白多了。
jonson 2007-08-28
xly_971223 写道
simohayha 写道
<  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的代码,简直无语.

火星语言!
one coin have two side ,it just a lanuage and the key is the programmer. a man use a lanuage but not a tool lanuage use a man!
xly_971223 2007-05-15
simohayha 写道
<  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的代码,简直无语.

火星语言!
Norther 2007-05-15
确实有点繁琐了,从JAVA刚诞生时的相对于C++的简洁到现在,几乎从一个极端走向另一个极端,应该大改一下了,否则。。。期待JAVA8.。
找不着北 2007-05-15
Norther 写道
有几句是我翻译的 嘿嘿


好像大部分都是你翻译的!
dovecat 2007-05-15
hurricane1026 写道
simohayha 写道
看看python,ruby的代码,再看看java的代码,唉。

和最最丑陋的c++的一堆Template。。。。比起来都差不多了。。。。
btw:我还是觉得那个黑眼镜图片比较酷...
simohayha 2007-05-15
看看python,ruby的代码,再看看java的代码,唉。
dovecat 2007-05-15
说实话,其实在出java tiger的时候,我就觉得java有往丑陋方向演化的倾向...现在...个人觉得,果不其然.看来可以换个方向了.
simohayha 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的代码,简直无语.
dovecat 2007-05-15
希望JAVA不要往丑陋的方向变.
简洁点...
Norther 2007-05-15
有几句是我翻译的 嘿嘿
dennis_zane 2007-05-15
看了下讨论中的语法,相比于动态语言的简洁,实在是很丑陋!-_-
找不着北
搜索本博客
博客分类
最近加入圈子
存档
最新评论