0%

Swift可选项与map函数

数组和可选项都拥有一个map函数,数组的map函数可以用来对数组的每一个元素都做处理,处理完的值放到一个新的数组中存储;可选项的map函数可以把可选项中的值解包后进行运算,将运算完的值再放到一个新的可选项中,使用可选项的map函数可以在不解包的情况下对可选项的值进行运算,非常方便。如果可选项值为nil,就不会进行运算。

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 可选项不为空时,可以使用map函数对可选项内容进行运算
let num1: Int? = 10
print("num1 = \(String(describing: num1))")
let num2 = num1.map { $0 * 2 }
print("num2 = \(String(describing: num2))")

// 可选项为空时执行map函数结果
let num3: Int? = nil
print("num3 = \(String(describing: num3))")
let num4 = num3.map { $0 * 2 }
print("num4 = \(String(describing: num4))")

// 数组使用map函数
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函数简化操作。