요약 - 파이프라인 빌더
Coddy Swift 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 43번째.
챌린지
중급클로저로 구동되는 작은 데이터 파이프라인을 구축하세요.
세 줄을 읽어 들입니다:
- 정수
min - 정수
scale - 쉼표로 구분된 정수 리스트
두 개의 클로저 팩토리를 정의하세요:
makeFilter(min: Int) -> (Int) -> Bool:min을 캡처하고 서술어n > min을 반환합니다.makeScaler(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:);
// 그 다음 필터링된 값, 스케일링된 값, 그리고 스케일링된 값들의 합계를 출력