高中的一年级应该是第一个接触功能概念的时代。这是非常令人印象深刻的。毕竟,这是大学入学考试结局的主题,但这是第二章的内容。
让我们看一下强制性的功能:$ $ y = f(x)$ $上述功能由三个部分组成:
函数的定义是:自变量x,在规则f(x)的操作后,获得变量。规则f(x)称为函数
上面的功能具有一个数学术语,称为一个 - 美元函数$ y = f(x1,x2)$ $如上所述。它称为二进制函数。自变量的数量确定了此功能的名称。
该功能的概念也已在计算机领域引入。许多语言已经在功能性语法中构建,以帮助我们实现类似于数学功能的功能。
让我们看一下功能的定义
这是C语言中定义的语法规则。可以看出,它与数学功能完全相同。它被传递到计算机中的自变量X。它称为参数。同时,它在功能内部。添加操作并返回。此时,此加法操作是数学中的规则f(x),返回值是由于可变的y
同样,上述函数称为一个元函数,因为他只有一个参数。
以同样的方式,两个参数称为二进制函数,依此类推。
各种编程语言提供了各种函数定义方法,但其本质与上述函数完全相同,但是定义方法已更改。
那些编写OOP具有经验的人,将课程用作实现功能的最小调度单元,并且需要定义这些数据结构的某些数据结构和操作。
基于此,设计模式的代码重复使用规则。设计模式的出现是解决OOP带来的一些缺点,并在一定程度上重复使用方法级别。
功能编程(以后使用FP)对非降级的关注。就像数学函数一样,只要您的输入参数相同,您的返回值就必须相同。他不会更改所有变量,并且只会返回新变量,这也意味着它没有线程安全问题。
我了解到,一些支持FP的学生一定已经在相关书籍中看到了一句话:该功能是第一个阶级公民,支持FP语言,并且作为数据类型存在。
当功能成为数据类型时,我们经常使用的许多设计模式都会有其他游戏玩法。
战略策略设计模式用于解决IF |在参数的同一情况下,直接查看类图
以上是一个典型的OOP想法。让我们看一下FP下的代码的代码实现
模板方法模板方法,保留一些扩展名(方法)将其留在子尺度上,例如生命周期函数。
FP功能代码实现:
可以发现,无论是策略还是模板设计模式,它都将函数用作数据类型,然后替换OOP中的继承。但是,对于一个函数,参数的数量已成为问题。为了实现函数,我们可以依靠多个外部参数。目前,它盲目地通过了后续代码的维护和扩展。以这种方式使用功能编程的特征也是诞生的。
封闭的概念来自前端。在流行的术语中,闭合是函数中所有变量(包括参数)的组合。
当函数创建函数时,默认值将创建闭合,例如像类型这样的构造函数。
一个问题:是否可以关闭函数,而没有返回值?
答:存在,没有什么可用的
上面提到的多参数问题,让我们看一下一件代码
可以看出,func1返回函数func2,func2函数访问func1函数的参数。实现这取决于闭合。
FUNC3此时引用了func22.continue致电func3,以获取func1的最终处理结果。
该函数将函数称为两个部分,如果将其编写在一起。
func1(1)(2)撰写本文的好处在哪里?
该变形的调用方法具有功能编程中的术语Corric。
从1.8开始,JDK提供了来自语言级别的一些功能来在Java字段中编写一些功能编程。
该函数作为参数Java 1.8提供了注释。其定义是:内部只有一个抽象方法接口,并且可以将其声明为功能接口。在同一时间,还提供了一些通用类来实现功能编程。
在图的顶部,有四个基本函数接口。这三个类都包装到了课堂上。课程没有回报值。返回值是布尔值,并且类没有参数。类是标准函数接口,并查看其定义。
可以看出,他在内部提供抽象功能,接受通用类型并返回通用。这是最标准的一个元素函数(仅一个参数)。
然后,问题是,如果我需要两个参数JDK,当然可以提供一个可接受的两个参数,那么只能返回一个值。如果要返回多个值,请打包收集类型。
然后问题又来了。如果我需要三个或多个参数,则不可能封装所有参数的功能。
让我们考虑一下这个问题的解决方案:对于多元化(人参)函数,我们可以将它们拆分成一个 - 美元的函数,然后让此一个 - 毛额函数返回一个 - 毛线功能以实现多参数传输。这是这个想法我们前面提到的Corride。
看看特定的实现
通过上述方法,您可以简单地编写一些代码,例如具有相同返回值但调用不同正方形的第三方调用。
以上是功能编程的简单介绍。其他行为还需要在实际代码中实践。