[TIL] Swift - forEach, map의 keyPaths, defer

신승현·2024년 2월 20일

TIL

목록 보기
25/72

1. forEach

  • forEach문은 JavaScript에서 자주 사용했던 방법인데, Swift에서도 사용할 수 있는걸 오늘에서야 알게 되었다.
// Instead of:
for element in array {
    doSomething(with: element)
}

// Do:
array.forEach { doSomething(with: $0) }

2. map, compactMap, filter, ... 의 keyPaths

  • KeyPaths는 간단하며, 메서드들에 체이닝을 걸 수 있는 장점도 있다.
// Instead of:
let filteredArray = array.filter { $0.isActive }
let titles = filteredArray.map { $0.title }

// Do:
let filteredArray = array.filter(\.isActive)
let titles = filteredArray.map(\.title)

// Or even:
let titles = array
    .filter(\.isActive)
    .map(\.title)

3. defer

  • defer 블럭 코드는 return이 실행된 후 호출된다.
func pop() -> Value? {
    defer {
        head = head?.next
    }
    return head?.value
}

func loadSomething(completion: () -> Void) {
    defer {
        isLoading = false
        completion()
    }
    isLoading = true
    guard someCondition else {
        return
    }
    doSomething()
}
profile
개발자

0개의 댓글