数组和可选项都拥有一个map函数,数组的map函数可以用来对数组的每一个元素都做处理,处理完的值放到一个新的数组中存储;可选项的map函数可以把可选项中的值解包后进行运算,将运算完的值再放到一个新的可选项中,使用可选项的map函数可以在不解包的情况下对可选项的值进行运算,非常方便。如果可选项值为nil,就不会进行运算。
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| let num1: Int? = 10 print("num1 = \(String(describing: num1))") let num2 = num1.map { $0 * 2 } print("num2 = \(String(describing: num2))")
let num3: Int? = nil print("num3 = \(String(describing: num3))") let num4 = num3.map { $0 * 2 } print("num4 = \(String(describing: num4))")
let arr1 = [1, 2, 3] print("arr1 = \(arr1)") let arr2 = arr1.map { $0 * 2 } print("arr2 = \(arr2)")
|
执行结果:
1 2 3 4 5 6 7
| num1 = Optional(10) num2 = Optional(20) num3 = nil num4 = nil arr1 = [1, 2, 3] arr2 = [2, 4, 6] Program ended with exit code: 0
|
如果不使用map函数,而需要达到和上面相同的结果,代码如下:
1 2 3 4 5
| var num1: Int? = 10 if let num = num1 { num1 = num * 2 } print(String(describing: num1))
|
由此可见,使用map函数在特定情况下可以简化操作。所以推荐可选项使用map函数简化操作。