函数式编程概念

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

什么是函数式编程

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

面向对象VS函数式编程

面向对象编程

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

函数式编程

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

两者差异

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

例子

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

总结

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

  1. 确定抽象函数,并为其构造函数
  2. 利用已有的函数来构造更为复杂的函数
  3. 通过将函数传给其他的函数来构建更为复杂的抽象。
目录
相关文章
|
5月前
|
并行计算 数据处理 UED
探索程序设计范式:面向对象编程与函数式编程之辩
在现代软件开发中,面向对象编程(OOP)和函数式编程(FP)是两种主流的程序设计范式。本文将对它们进行比较和分析,并探讨如何根据项目需求和个人喜好做出选择。无论是OOP的灵活性和可维护性,还是FP的简洁性和并发性,都有其独特的优势。
|
5月前
|
安全 Java Go
Go语言基础与面向对象编程概念
【2月更文挑战第10天】本文旨在介绍Go语言的基本特性和面向对象编程(OOP)的核心概念,以及如何将这两者结合起来。通过Go语言的结构体和方法实现封装、继承和多态,让读者深入理解面向对象编程在Go中的实现方式。文章适合对Go语言感兴趣的初学者和想要了解OOP在Go中如何应用的开发者。
|
3月前
|
自然语言处理 开发者
编程问题之函数式编程有什么优点
编程问题之函数式编程有什么优点
|
5月前
|
大数据 开发者
探索编程范式:面向对象与函数式的抉择
在当今快速发展的软件开发领域,面向对象编程(OOP)和函数式编程(FP)是两种重要的编程范式。本文将深入比较这两种范式的特点、应用场景和优劣势,为读者提供选择时的参考,并探讨如何在实际项目中灵活运用它们。
|
5月前
|
Java 程序员 数据处理
探索编程范式:面向对象编程与函数式编程的比较与取舍
本文将探讨面向对象编程(OOP)和函数式编程(FP)两种主流的编程范式,并比较它们在代码组织、可复用性、并发性和代码风格等方面的特点。通过深入了解它们的优势和不足,读者可以更好地选择适合自己项目需求的编程范式。
224 1
|
Linux C语言 C++
面向对象与面向过程最本质的区别
面向对象与面向过程最本质的区别
76 0
面向对象概念
1. Coad和Yourdon给出了一个定义:面向对象=对象+类+继承+通信 2. 如果一个软件系统使用这样4个概念设计和实现,则我们认为这个软件系统是面向对象的 什么是对象(object)
74 0
C++面向对象的概念和特点
C++面向对象的概念和特点
|
Java Scala 开发者
函数式编程几个重要概念|学习笔记
快速学习函数式编程几个重要概念。
函数式编程几个重要概念|学习笔记
|
算法 Java Scala
函数式编程基础介绍|学习笔记
快速学习函数式编程基础介绍。
函数式编程基础介绍|学习笔记