范围方法
本课属于 Coddy Swift 学习旅程的“逻辑与流程”单元。第 9 课,共 56 课。
范围是真正的 Collection,所以你可以像操作数组一样使用同一套工具。
contains、count、first 和 last 都可以直接使用:
let r = 1...10
print(r.contains(5)) // true
print(r.count) // 10
print(r.first!, r.last!) // 1 10你用过的大多数数组方法也能正常使用。filter会返回一个数组,因为筛选范围得到的结果本身并不是范围:
let evens = (1...10).filter { $0 % 2 == 0 }
print(evens) // [2, 4, 6, 8, 10]reduce 也是如此:范围支持它,你可以用它快速求和和计算乘积。
挑战
简单读取两个整数(两行):n 和 target。将闭区间 1...n 作为你的数据集。
打印三行:
- 当
target在这个范围内时,打印true,否则打印false - 范围内所有值的乘积(
n!:阶乘)。使用reduce。 - 范围内能被
3整除的值,用,连接(如果没有符合条件的值,则打印空行)。使用filter。
输入 5 / 3 时,输出为:
true
120
3亲手试试
let n = Int(readLine()!)!
let target = Int(readLine()!)!
let r = 1...n
// TODO:用 contains(target) 检查是否包含目标值,用 reduce 计算乘积,用 filter 筛选 3 的倍数。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Swift 在线编辑器