Map
本课属于 Coddy Swift 学习旅程的“逻辑与流程”单元。第 23 课,共 56 课。
map 接收一个闭包,并将它应用于每个元素,返回一个由结果组成的新数组。新数组的长度与原数组相同。
let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 }
print(doubled) // [2, 4, 6, 8]$0 是闭包第一个参数的简写。较长的写法会明确写出参数名称和返回类型:
let doubled = nums.map { (n: Int) -> Int in
return n * 2
}map 也可以更改元素类型。通过一个返回 String 的闭包映射 [Int],会得到一个 [String]:
let labels = nums.map { "#\($0)" }
print(labels) // ["#1", "#2", "#3", "#4"]挑战
简单读取一行输入:以逗号分隔的整数列表(华氏温度)。
使用公式 C = (F - 32) * 5 / 9 将每个温度转换为摄氏温度,采用整数运算(向零截断,不保留小数)。分行打印:
- 摄氏温度,用
,连接 - 每个温度对应一个标签,前缀为
F=<f> C=<c>,用;连接
两行都使用 map。
对于输入 32,212,98,0,输出为:
0,100,36,-17
F=32 C=0;F=212 C=100;F=98 C=36;F=0 C=-17亲手试试
let f = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO:第 1 行 = 用 "," 连接的摄氏温度
// TODO:第 2 行 = 用 ";" 连接的标签 "F=<f> C=<c>"
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Swift 在线编辑器