回顾:管道构建器
本课属于 Coddy Swift 学习旅程的“逻辑与流程”单元。第 43 课,共 56 课。
挑战
中等使用闭包构建一个小型数据管道。
读取三行输入:
- 一个整数
min - 一个整数
scale - 一个由逗号分隔的整数列表
定义两个闭包工厂:
makeFilter(min: Int) -> (Int) -> Bool捕获min,并返回一个谓词n > minmakeScaler(by: Int) -> (Int) -> Int捕获by,并返回一个将数值乘以它的函数
然后定义函数 pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int],先进行筛选,再进行转换。
打印三行:
- 筛选后保留的数字,用
,连接 - 这些数字缩放后的结果,用
,连接 - 缩放后数值的总和
输入 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 在线编辑器