函数式编程概念

简介: 介绍函数式编程的概念,函数式编程和面向对象编程的对比以及编程实例。

什么是函数式编程

简单地说,函数式编程通过使用函数,将值转换成抽象单元,接着用于构建软件系统。

面向对象VS函数式编程

面向对象编程

面向对象编程认为一切事物皆对象,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象和数字建模。面向对象编程有三个特征,分别是封装,继承和多态。面向对象的主要目标是问题的分解,如下图所示:
object

函数式编程

函数式编程以函数为抽象单元和行为单元,实现数据的封装和隐藏,与面向对象将问题分解成多组“名词”或对象不同,函数式方法将相同的问题分解成多组“动词”或函数。函数式编程也可以通过组合来构造更大的函数,实现抽象的行为。如下图所示:一种函数式的部件组成一个完整的系统的方法,就是取一个“值”,然后将它逐渐“改变”,通过一个原始的或者组合的函数,成为另外一个值。
func_jpeg

两者差异

在一个面向对象的系统内部,对象之间的交互会引起各种对象内部状态的变化,而整个系统的变化是由许多小的,细微的变化混合形成的,这些相互关联的状态变化形成了一个概念上的“变化网”。但我们需要跟踪这边变化的时候,就需要了解彼此之间这种微妙且广泛的变化。
相比之下,函数式系统则努力减少可见状态的修改。向一个遵循函数式的系统添加新功能就成了理解如何在局限的上下文环境中,无破坏地进行数据转换。函数式编程以命令的方式构建系统,并通过显性的状态来改变缩减到最小来变得更加模块化。

例子

  function demo{                                                                    
    return function(array){
        return fun.apply(null,array);//返回一个函数
      }
  }
  

总结

总的来说,函数式编程包括以下四个方面:

  1. 确定抽象函数,并为其构造函数
  2. 利用已有的函数来构造更为复杂的函数
  3. 通过将函数传给其他的函数来构建更为复杂的抽象。
目录
相关文章
|
7月前
|
并行计算 数据处理 UED
探索程序设计范式:面向对象编程与函数式编程之辩
在现代软件开发中,面向对象编程(OOP)和函数式编程(FP)是两种主流的程序设计范式。本文将对它们进行比较和分析,并探讨如何根据项目需求和个人喜好做出选择。无论是OOP的灵活性和可维护性,还是FP的简洁性和并发性,都有其独特的优势。
|
2月前
|
并行计算 安全 数据处理
函数式编程和面向对象编程有什么区别?
【10月更文挑战第12天】 函数式编程与面向对象编程是两种不同的编程范式。前者强调数学函数的求值、不可变数据和纯函数,后者则以对象为核心,封装数据和方法。函数式编程更关注数据转换和计算过程,而面向对象编程关注对象的定义和交互。两者在数据处理、函数角色、代码结构、并发处理、灵活性和适用场景等方面存在显著差异。在实际开发中,可以根据需求选择合适的编程范式或结合使用。
108 4
|
6月前
|
Java 开发者
Java面向对象编程(OOP)的四个主要概念
【6月更文挑战第19天】Java OOP的基石是封装、抽象、继承和多态。封装是通过类隐藏数据细节;抽象简化复杂性,用接口和抽象类实现;继承让子类从父类继承属性和行为,促进代码重用;多态一个接口可有多种形态,分编译时和运行时。这些概念支持灵活且可扩展的软件设计。
57 1
|
7月前
|
程序员 C#
C#编程中的面向对象编程思想
【4月更文挑战第21天】本文探讨了C#中的面向对象编程,包括类、对象、封装、继承和多态。类是对象的抽象,定义属性和行为;对象是类的实例。封装隐藏内部细节,只暴露必要接口。继承允许类复用和扩展属性与行为,而多态使不同类的对象能通过相同接口调用方法。C#通过访问修饰符实现封装,使用虚方法和抽象方法实现多态。理解并应用这些概念,能提升代码的清晰度和可扩展性,助你成为更好的C#程序员。
108 4
|
7月前
|
大数据 开发者
探索编程范式:面向对象与函数式的抉择
在当今快速发展的软件开发领域,面向对象编程(OOP)和函数式编程(FP)是两种重要的编程范式。本文将深入比较这两种范式的特点、应用场景和优劣势,为读者提供选择时的参考,并探讨如何在实际项目中灵活运用它们。
|
7月前
|
Java 程序员 数据处理
探索编程范式:面向对象编程与函数式编程的比较与取舍
本文将探讨面向对象编程(OOP)和函数式编程(FP)两种主流的编程范式,并比较它们在代码组织、可复用性、并发性和代码风格等方面的特点。通过深入了解它们的优势和不足,读者可以更好地选择适合自己项目需求的编程范式。
280 1
面向对象概念
1. Coad和Yourdon给出了一个定义:面向对象=对象+类+继承+通信 2. 如果一个软件系统使用这样4个概念设计和实现,则我们认为这个软件系统是面向对象的 什么是对象(object)
102 0
C++面向对象的概念和特点
C++面向对象的概念和特点
|
Java Scala 开发者
函数式编程几个重要概念|学习笔记
快速学习函数式编程几个重要概念。
函数式编程几个重要概念|学习笔记