Menu
CoddyTech

回顾:管道构建器

本课属于 Coddy Swift 学习旅程的“逻辑与流程”单元。第 43 课,共 56 课。

challenge icon

挑战

中等

使用闭包构建一个小型数据管道。

读取三行输入:

  1. 一个整数 min
  2. 一个整数 scale
  3. 一个由逗号分隔的整数列表

定义两个闭包工厂:

  • makeFilter(min: Int) -> (Int) -> Bool 捕获 min,并返回一个谓词 n > min
  • makeScaler(by: Int) -> (Int) -> Int 捕获 by,并返回一个将数值乘以它的函数

然后定义函数 pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int],先进行筛选,再进行转换。

打印三行:

  1. 筛选后保留的数字,用 , 连接
  2. 这些数字缩放后的结果,用 , 连接
  3. 缩放后数值的总和

输入 5 / 3 / 2,7,3,8,9 时,输出为:

7,8,9
21,24,27
72

亲手试试

let minVal = Int(readLine()!)!
let scale = Int(readLine()!)!
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }

// TODO:让 makeFilter / makeScaler 返回闭包;实现 pipeline(_:filter:transform:);
// 然后输出筛选后的值、缩放后的值,以及缩放后各值的总和

逻辑与流程中的所有课

自己练习: Swift 在线编辑器