Swift 功能编程浅析

2025-10-25 18:10:58

1、映射  

一一对应的关系,根据输入一一映射为输出

要求

计算一个数组中各数的平方

2、// 常规的方法:使用一个循环,进行计算,很直观的方法

let values = [2.0, 4.0, 5.0, 7.0]

var squares : [Double] = []

for value in values {

  squares.append(value*value)

}

3、// 使用闭包完整的方法

// 将闭包传送给map函数,该闭包是一个计算平方值的函数,输入一个参数,返回改参数的平方

let squares = values.map({

  (value : Double) -> Double in

  return value*value

})

4、// 简化闭包的写法

// 最后一个参数是闭包时,可以简化

let squares = values.map {value in value*value}

5、// 最简化的写法

// 对于闭包的参数可以使用$0 (第一个参数),$1(第二个参数)... 的方式

let squares = values.map({ $0 * $0})

6、map还可以用于数组(array)以外的其他集合类型,比如字典(dictionary):

let values = ["value1" : 2.0, "value2" : 4.0, "value3" : 5.0, "value4" : 7.0]

let squares = values.map { $1 * $1 }

1、过滤

返回满足条件的集合

要求

返回所有偶数

2、代码:

let values = [1,3,4,6,10,12,15]

let even = values.filter { $0 % 2 == 0 }

其返回值为:[4,6,10,12]

可以看出,如果使用常规循环的方式,本方法简单了很多。

1、缩减

合并所有元素,返回一个值

2、示例1:

计算一个数组中所有数之和

let values = [1,2,3,4,5,6,7,8,9,10]

// 两个参数,第一个是初始值,第二个是操作符

let total = values4.reduce(5, +)

最后,total的结果是60(55 加上初始值5)

3、第二个参数也可以是一个闭包(此闭包包括两个参数),可用来定义自己的方法

示例2:

在每个元素前加一个“,”号

// 完整闭包的写法

let values5 = ["a","b","c"]

let result = values5.reduce("", { initial , value in

  return "\(initial),\(value)"

})

// 简化写法

let result2 = values5.reduce("") { "\($0),\($1)" }

最后的结果是:,a,b,c

1、映射合并 

把多层集合合并成一个集合,由于比较简单,略去示例

1、链式操作 

可以把以上各操作链接起来,就是说把一个操作的结果作为另一个操作的输入

2、示例:

计算奇数的和

let values = [1,2,3,4,5,6,7,8,9,10]

let result = values.filter{$0 % 2 != 0}.reduce(0, +)

最后的结果是:25

3、在Playground中

Swift 功能编程浅析

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:191
  • 阅读量:169
  • 阅读量:182
  • 阅读量:88
  • 阅读量:148
  • 猜你喜欢