Swift
Swift)고차함수 filter
나태한개발
2024. 5. 10. 19:40
저번 map 함수에 이어 filter 함수에 대해서 정리 해 볼까 한다.
filter 기본형태
array.filter(isIncluded: T throws -> T)
filter 함수는 조건에 맞는 값들을 걸러 반환한다.
조건달린 map인거 같다.
filter 사용 예시
let arr1: [Int] = [1, 2, 3, 4, 5]
var arr2: [Int] = []
for num in arr1 {
if num%2 == 0 {
arr2.append(num)
}
}
print(arr2) //[2,4]
for 문을 사용하여 짝수인 값만 걸러내는 코드
이것을 filter 함수를 이용하면
let arr1: [Int] = [1, 2, 3, 4, 5]
var arr2: [Int] = arr1.filter{ $0%2 == 0 }
print(arr2) //[2,4]
이렇게 간단하게 줄일수 있다.
이 축약 표현도 풀어서 보면
let arr1: [Int] = [1, 2, 3, 4, 5]
var arr2 = arr1.filter({ (num: Int) -> Bool in
return num%2 == 0 //true, false
})
/*이렇게 된것을 축약한 것인데 함수에 파라미터가 클로저 하나일 경우 ()를 생략 할수 있다.*/
arr1.filter{ (num: Int) -> Bool in
return num%2 == 0
} //()생략
/*파라미형식과 리턴형식도 생략할수 있다.*/
arr1.filter{ (num) in
return num%2 == 0
} //파라미터형식, 리턴형식 생략
/*파라미터를 인자 이름 축약(Shorthand Arguments Names)을 통하여
$0표시를 통해 간단하게 표현할수 있다.*/
arr1.filter{
return $0%2 == 0
} //파라미터와 in 을 생략해도 된다.
/*마지막으로 리턴문만 남았을 경우 그것마저 생략할수 있다.*/
arr1.filter{ $0%2 == 0 } //filter 함수의 가장 간단한 형태