filter함수는 컨테이너 내부의 값을 걸러서 새로운 컨테이너로 추출 하는 함수다.
배열의 : filter(_ isIncluded: (Self.Element) throws -> Bool) rethrows -> [Self.Element]
isIncluded: 시퀀스의 요소를 인수로 사용하고 요소가 반환된 배열에 포함되어야 하는지 여부를 나타내는 부울 값을 반환하는 클로저입니다.
문자열 : func filter(_ isIncluded: (Character) throws -> Bool) rethrows -> String
예문
var filterTestArray = ["1", "+", "2","-", "3"]
print(filterTestArray)
filterTestArray = filterTestArray.filter { (element: String) in
guard Int(element) != nil else {
return false
}
return true
}
print(filterTestArray)
filterTestArray = filterTestArray.filter({ String in
Int(String) ?? 0 > 1
})
print(filterTestArray)
filterTestArray = filterTestArray.filter { Int($0) ?? 0 > 2 }
print(filterTestArray)
filterTestArray = filterTestArray.filter { !Character($0).isNumber }
print(filterTestArray)
let filterTestString = "123asd"
print(filterTestString.filter { Character in
Character.isNumber
})//
var dropFirstTestArray = ["1", "+", "2","-", "3"]
print(dropFirstTestArray.dropFirst())
var dropLastTestArray = ["1", "+", "2","-", "3"]
print(dropLastTestArray.dropLast())
var number = [1, 4, 5, 2, 3, 7, 8, 6]
number.sorted(by: { (s1: Int, s2: Int) -> Bool in return s1 > s2 } )
// 클로저의 기본 표현법 by 의 매개변수 값으로 클로저를 사용
// 문맥에서 타입 추론
number.sorted(by: {s1, s2 in return s1 > s2})
# /* sorted(by:)의 메소드에서 이미 (Int, Int) -> Bool 타입의 인자가 들어와야 하는걸
알기 때문에 클로저에서 이 타입들은 생략이 가능하다.*/
// 단일 표현 클로저에서의 암시적 반환
number.sorted(by: { s1, s2 in s1 > s2 } )
// return 하는 값이 하나일 경우에 return 생략이 가능
// 인자 이름 축약
number.sorted(by: { $0 > $1 } )
// 값을 순서대로 $0, $1, $2 등으로 표현하여 인자 입력부분과 in 키워드 부분을 생략
number.sorted { $0 > $1 }
// 함수 마지막 인자가 클로저일때, 후행 클로저를 사용하면 () 생략이 가능하다.
// 후행 클로저
//func someNumber(closure: {
// // 클로저의 내용
//})
// 함수의 마지막 인자가 클로저이면 후위 클로저 사용이 가능하다.
func someNumber() {
// 클로저의 내용 -> 자주 사용했던 함수도 클로저의 형태
}
func reduce(initial: U, combine: (U, T) -> U) -> U
func compactMap(_ transform: @escaping (Self.Output) -> T?) -> Publishers.CompactMap<Self, T>