这句话是真的吗,Java 8提供了函数式风格,但不是函数式编程,因为它使用的语法也是一个对象?
Calculator calc = (i, j) -> i/j;如果是,那么为什么我们到处都是关于Java 8函数式编程的文章呢?
发布于 2019-11-02 01:04:01
以下是抽象FP概念的(非详尽)列表:
functions
我可以继续下去。一种语言不需要勾选列表中的每一个方框才能成为“函数式编程语言”(我实际上想不出任何符合所有这些要点的方框),但它勾选的方框越多,您给它贴上标签的资格就越少。这就是为什么Java在许多函数式程序员的眼里不合格的原因:它只是不能检查上面的许多项(可以说只有一项)。
这并不是说你不能用Java进行函数式编程,但它很难。该语言为您提供的工具太少,这意味着您将不得不编写大量样板来将必要的原语编码为类,这意味着您的代码将变得更慢且更难遵循(这是在您遇到这些原语的15个不同的竞争即席库实现之前)。
你可以把你的对象当作不可变的,更喜欢表达式而不是语句(比如使用三元运算符而不是if/else),让你的大多数方法成为纯函数,使用lambdas等等,但最终还是会有很多摩擦,无论是语言还是社区的期望。
https://stackoverflow.com/questions/58658878
复制相似问题