Swift中的功能组合

数学中一个非常有趣的概念是函数合成 ,正如名称所暗示的那样,它允许将两个函数合成。 用数学符号表示,可以写如下的方程式

f-> x:x * 3

g-> x:x + 4

h-> x:f。 G

h(5)= 27

总结起来,这意味着放在组合函数中的x值将首先在右边服务该函数,并且其结果将用作左边函数的参数。

Haskell是一种可以充分利用后者的编程语言,下面是一个示例:

所以,

将返回13。

但是我们如何在Swift中实现函数组合呢? 让我们使用游乐场看看!

优先级组的唯一用途是使我们后面的“°”中缀运算符保持关联。 …函数的签名非常有趣,让我们来看一下。

我们有三种通用类型-T,U和V。我们的第一个参数f1接受一个函数,该函数接受U并返回V。但是,第二个参数f2接受一个函数,该函数接受T并返回U。我们的返回类型为一个函数本身,它采用T,因此为f2的自变量,并返回V,因此返回类型为1。这是正确的,考虑到如何在顶部解释函数的组成。

由于我们的返回类型将是一个函数,因此我们必须能够插入一个值,因此,我们是否必须使用闭包,这将说明返回后的花括号。 将要输入的值称为x,然后将我们的函数放在一起:f1取f2,x取x。

我们定义了以下两个函数,以便可以测试组成,最后一个表达式表明它有效。

我们完成了,看起来不是很优雅吗?