Menu
CoddyTech

范围方法

本课属于 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 也是如此:范围支持它,你可以用它快速求和和计算乘积。

challenge icon

挑战

简单

读取两个整数(两行):n 和 target。将闭区间 1...n 作为你的数据集。

打印三行:

  1. 当 target 在这个范围内时,打印 true,否则打印 false
  2. 范围内所有值的乘积(n!:阶乘)。使用 reduce。
  3. 范围内能被 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 的倍数。
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Swift 在线编辑器