【发布时间】:2011-04-26 06:51:14
【问题描述】:
我在 Joel On Software 上阅读了一篇关于使用高阶函数通过使用 map 和 reduce 大大简化代码的想法的文章。他提到这在 Java 中很难做到。文章:http://www.joelonsoftware.com/items/2006/08/01.html
下面文章中的示例循环遍历一个数组,并使用作为参数传递给数组中每个元素的函数 fn:
function map(fn, a)
{
for (i = 0; i < a.length; i++)
{
a[i] = fn(a[i]);
}
}
这将在实践中类似于以下调用:
map( function(x){return x*2;}, a );
map( alert, a );
如果可能的话,我想写一个映射函数来处理数组或任何类型的集合。
我一直在 Internet 上四处寻找,但很难找到有关该主题的资源。首先,java中可以使用匿名函数吗?这有可能以另一种方式做到吗?它会在 Java 的未来版本中提供吗?如果可能,我该怎么做?
我想如果这在 Java 中是不可能的,那么人们可以使用某种“模式”/技术来实现相同的效果,因为我认为匿名函数是软件世界中非常强大的工具。我能找到的唯一类似问题是:Java generics - implementing higher order functions like map,这对我来说完全没有意义。
【问题讨论】:
标签: java functional-programming higher-order-functions