Swift学习:函数式编程

函数式编程


在学习Swift的过程中,我发现了一个以往没有学过的概念,就是函数也可以作为一个对象,可以当作参数,也可以传值。

我一开始并不理解这个概念,后来看了一些视频发现,这是一种编程思想,叫做函数式编程,这种思想更贴近于人的思想,Swift里添加了这种特性。

比如,我想把一个Int数组里的每一个数都变成一个字符串,那么我会怎么做。

let array = [1,2,3,4,5]

var result : [String] = []

for i in 0  ..< array.count

{

result.append(String(array[i]))

}

当然是先遍历,然后再读取出来,强制类型转换,再放进去。

然而在Swift里有一个更为简单的方法来解决上面这个问题:

let array = [1,2,3,4,5]

let string = array.map(String.init)

我们向map函数里再传进去一个函数,这个函数就是处理每个参数的方法,计算机按照这个方法执行就好了。这样我们就忽略了他底层的实现,专注于处理的方法,这是我理解的函数式编程。


Monad


在wikipedia上是这么解释的:

In functional programming, a monad is a structure that represents computations defined as sequences of steps: a type with a monad structure defines what it means to chain operations, or nest functions of that type together.

它是一种结构,可以看作一连串步骤组成的运算。

还是上面那个例子,map()实现了数组元素的一一映射,String.init()实现了Int类型到String类型的转换,它们都有各自的功能,然后按照顺序执行。如果我们在外面再嵌套一层函数,比如,把数组元素都拼接起来,那么就有三层函数依次执行,我把这种结构称为Monad。

在这里有一篇图文并茂的文章,解释的很好:

英文文章地址

你可能感兴趣的:(Swift学习:函数式编程)