map
array의 모든 요소에 동일한 연산(함수)을 실행한다.
공식 문서 예시
let cast = ["Vivien", "Marlon", "Kim", "Karl"]
let lowercaseNames = cast.map { $0.lowercased() }
// 'lowercaseNames' == ["vivien", "marlon", "kim", "karl"]
let letterCounts = cast.map { $0.count }
// 'letterCounts' == [6, 6, 3, 4]
filter
array의 모든 요소에서 특정 조건에 부합하는 요소만으로 이루어진 배열을 리턴한다.
공식 문서 예시
let cast: Set = ["Vivien", "Marlon", "Kim", "Karl"]
let shortNames = cast.filter { $0.count < 5 }
shortNames.isSubset(of: cast) // Subset: 부분 집합
// true
shortNames.contains("Vivien")
// false
filter 활용
- 1부터 n까지 자연수 중 홀수만 담는 배열 반환
func solution(_ n: Int) -> [Int] { (0...n).filter { $0 % 2 == 1 } }
(0...n)은 원래 range 타입이지만 filter가 타입을 자동으로 추론해 배열로 인식한다
이러한 고차함수를 사용해 반복문을 사용할 필요 없이 효율적인 코드 작성이 가능하고 array의 요소에 접근하기도 용이하다.
'ios > swift' 카테고리의 다른 글
[Swift] String을 Int로 변환할 때 왜 Optional<Int>타입이 될까? (4) | 2023.10.02 |
---|---|
[Swift] function과 method (0) | 2023.10.01 |
[Swift] split과 components (0) | 2023.10.01 |
[Swift] Array (0) | 2023.05.28 |
[Swift] round(), ceil(), floor() (0) | 2023.05.02 |