有没有人用java编写了一个提供映射功能的库(例如lisp的mapcar)。
问问题
415 次
2 回答
6
有几个。它们通常被描述为类似于“Java 中的函数式编程”库,而不是通过引用 LISP。
在我的公司,函数式编程德鲁伊将函数式 Java作为他们的首选库,尽管有相当一部分人更喜欢Guava中的函数式规定。
Guava 是一个非常主流和流行的库;它牢牢地属于“没有人因使用而被解雇”类别。FJ 可能不太为人所知,但我们使用它非常愉快。我们甚至已经分叉了它,所以我们可以帮助改进它。
于 2012-08-09T19:32:32.730 回答
2
那么,您将期待 Java 8!它将包含 Project Lambda,它为类似闭包的匿名类提供了更好的语法。†</sup> 示例:
Iterable<String> strs = ...
Iterable<String> downCased = strs.map(s -> s.toLowerCase());
任何具有一种方法的接口(或具有一种抽象方法的抽象类)都可以使用这种语法,包括 Guava 的Function
和Predicate
(尽管 Java 8 有自己的Mapper
和Predicate
接口,所以这些都是开箱即用的)。在这种情况下Iterable.map
,是一个新的扩展方法,它采用一个名为 的新接口类型Mapper
。
如果您想了解更多 Java 8 lambda 示例,请询问!
† 匿名类的所有通常限制仍然适用,包括局部自由变量必须是“有效的最终”。这意味着您不必将变量显式标记为final
,但仍然不允许更改该值。
于 2012-08-09T19:57:12.310 回答