函数在 Swift 中是一等值 ( rst-class-values),换句话说,函数可以作为参数被传递到其它函 数,也可以作为其它函数的返回值。
一等函数
函数式编程的核心理念就是 函数是值,它和结构体、整型或是布尔型没有什么区别 —— 对函数使用另外一套命名规则会 违背这一理念。
在 Swift 中计算和传递函数的方式与整型或布尔型没有任何不同。这让我 们能够写出一些基础的图形组件 (比如圆),进而能以这些组件为基础,来构建一系列函数。每 个函数都能修改或是合并区域,并以此创建新的区域。比起写复杂的函数来解决某个具体的问 题,现在我们完全可以通过将一些小型函数装配起来,广泛地解决各种各样的问题。
虽然 Objective-C 也支持一等函数,或者说是 block,也 可以做到类似的事情,但遗憾的是,在 Objective-C 中使用 block 十分繁琐。
一部分原因是因为语法问题:block 的声明和 block 的类型与 Swift 的对应部分相比并不是那么简单。