Swift 相比原先的 Objective-C 最重要的优点之一,就是对函数式编程提供了更好的支持。 Swift 提供了更多的语法和一些新特性来增强函数式编程的能力,本文就在这方面进行一些讨论。
[b]Swift 概览[/b]
对编程语言有了一些经验的程序员,尤其是那些对多种不同类型的编程语言都有经验的开发者, 在学习新的语言的时候更加得心应手。原因在于编程语言本身也是有各种范式的, 把握住这些特点就可以比较容易的上手了。
在入手一门新的语言的时候,一般关注的内容有:
1.原生数据结构
2.运算符
3.分支控制
4.如果是面向对象的编程语言,其面向对象的实现是怎样的
5.如果是函数式编程语言,其面向函数式编程的实现是怎样的
通过这几个点,其实只要阅读 Swift 文档的第一章,你就可以对这个语言有一个大概的印象。 比如对于数据结构,Swift 和其他的编程语言大体一样,有 Int, Float, Array, Dictionary 等, 运算符也基本与 C 语言一致等。 本文主要集中于对 Swift 函数式编程方面的特点进行一些盘点,因此在这里假设大家对 Swift 的基本语法已经有所了解。
对于一种编程范式,要掌握它也要抓住一些要点。对于支持函数式编程的语言,其一般的特点可能包含以下几种:
1.支持递归
2.函数本身是语言 First Class 的组成要素,且支持高阶函数和闭包
3.函数调用尽可能没有副作用 ([url=http://en.wikipedia.org/wiki/Side_effect_%28computer_science%29]Side Effect)[/url] 的条件
接下来我们来逐个盘点这些内容。
[b]递归[/b]
Swift 是支持递归的,事实上现在不支持递归的编程语言已经很难找到了。在 Swift 里写一个递归调用和其他编程语言并没有什么区别: