Programming/Swift
Key path를 활용한 Swift Closure 활용하기
알레아
2023. 2. 14. 00:20
반응형
키 경로를 사용하여 코드를 더 읽기 쉽고 효율적으로 만드는 방법을 소개하도록 하겠습니다.
다음과 같이 회사의 이름 및 public 여부 등을 나타내는 Company struct가 있다고 해보겠습니다.
struct Company {
let name: String
let isPublic: Bool
let stockPrice: Int
}
let companies: [Company] = [
Company(name: "Apple", isPublic: true, stockPrice: 140),
Company(name: "Facebook", isPublic: true, stockPrice: 12),
Company(name: "Google", isPublic: false, stockPrice: 333),
Company(name: "Tesla", isPublic: false, stockPrice: 1200),
Company(name: "Visa", isPublic: true, stockPrice: 1222)
]
이중에서 isPublic한 회사를 추출하고 싶을 때 기존에는 아래와 같이 확인할 수 있었는데요
func getPublicCompany() {
let publicCompanies = companies.filter { company in
company.isPublic
}.compantMap { company in
company.name
}
print(publicCompanies)
}
["Apple", "Facebook", "Visa"]
위의 방법을
Key Path를 통해 아래와 같이 표현할 수 있습니다. 기존 방식보다 더욱 간결해지고 읽기 쉬운 방식입니다.
func getPublicCompany() {
let publicCompanies = companies.filter(\.isPublic).map(\.name)
print(publicCompanies)
}
["Apple", "Facebook", "Visa"]
만약, filter 부분에 조건이 여러개 필요한 경우라면?
아래와 같이 사용하면 좋을 것 같습니다.
struct Company {
let name: String
let isPublic: Bool
let stockPrice: Int
var shouldSave: Bool {
if isPublic {
return false
}
if stockPrice > 1000 {
return true
}
return false
}
}
func shouldSaveCompany() {
let publicCompanies = companies.filter(\.shouldSave).map(\.name)
print(publicCompanies)
}
["Tesla"]
반응형