Java中的 函数式 编程范式(翻译+汇总)

2020-09-16  本文已影响0人  云中人山

Java中的 函数式 编程范式(翻译+汇总)


函数式编程范式 略讲

每种编程语言均有自己的语法和结构规范定义。 这些规范即称为编程范式。 编程范式的英语是 Programming Paradigm,范即模范之意,范式即模式、方法,是一类典型的编程风格,是指从事软件工程的一类典型的风格。

现在的可用编程范式有:命令式,面向对象,函数式,逻辑式等等。

现代编程语言非常复杂,无法建立在一个或多个范例上。

函数式编程作为编程范式之一,着重于编程的声明性方面,其中业务逻辑由纯函数组成,这种想法在某种程度上与面向对象方法的本质形成了对比。 有趣的是,Java将该技术很好地吸收到了该语言的语法结构中。 现在,开发人员可以使用lambda无缝编织代码的功能方面,而无需破坏现有体系结构,甚至不必担心向后兼容性。

The evolution of various programming languages

图中的 Imperative为 命令式,命令式的编程范式是命令驱动的,必须指明任务是什么,并阐述如何完成。
Declarative为陈述式

面向对象与函数式

在OOP中,所有事物都表示为一个对象。 因此,即使只需要实现某一行为,例如简单的加法,也必须定义成一个类及其属性组成的格式。

在函数式编程中,我们通过函数定义行为,而不通过对象定义行为。 这意味着在函数式编程中,我们直接实现函数,而不是包含函数的类。(This means in functional programming we directly implement a function rather than an class that contains a function)

这是OOP和功能编程之间的基本区别。

函数式编程与纯函数式编程(Functional programming vs Purely Functional programming)

纯函数式编程,本质上不允许任何的可变性

函数式风格的语言提供了高阶函数,但是也引入了可变性,可能会导致错误

因此,如果一种语言提供了高阶函数(higher-order function ),那他就是一种函数式编程语言。如果一种语言除了高阶函数外,还控制了其中的可变性(mutability ),那么它就是一种纯函数式语言。

Java是一种函数式语言,Haskell是一种纯函数式语言

以下是一些函数式编程的基本概念:

Lambda表达式的语法为 (parameter) -> body

Java7 的匿名方法 对比 Java 8的 lambda表达式

java 7 :

// Java program to demonstrate 
// anonymous method 
import java.util.Arrays; 
import java.util.List; 
public class GFG { 
    public static void main(String[] args) 
    { 
  
        // Defining an anonymous method 
        Runnable r = new Runnable() { 
            public void run() 
            { 
                System.out.println( 
                    "Running in Runnable thread"); 
            } 
        }; 
  
        r.run(); 
        System.out.println( 
            "Running in main thread"); 
    } 
} 

JAVA 8

import java.util.Arrays; 
import java.util.List; 
public class GFG { 
    public static void main(String[] args) 
    { 
        Runnable r 
            = () 
            -> System.out.println( 
                "Running in Runnable thread"); 
  
        r.run(); 
  
        System.out.println( 
            "Running in main thread"); 
    } 
} 

原文:

What Is Functional Programming in Java?

Functional Programming in Java with Examples

上一篇 下一篇

猜你喜欢

热点阅读