본문 바로가기

Swift12

\Root.Value 는 (Root) -> Value이다 KeyPath 번역하자면 "특정 루트 유형에서 특정 결과 값 유형으로의 키 경로" 다시 쉽게 이해하자면 특정 루트 유형(내가 알고 싶은 값을 담고있는 타입)에서 특정결괏값 유형(내가 알고 싶은 값)의 경로 class KeyPath class KeyPath 예시 struct Video { let ratio: Ratio var quality: Float } struct Ratio { var horizontal: Int var vertical: Int } var gameVideo = Video( ratio: .init( horizontal: 16, vertical: 9), quality: 720 ) 여기서 Ratio의 값을 접근해야한다면 1. 프로퍼티에 접근한다 2. 함수로 접근한다 3. KeyPath를 사용.. 2023. 9. 26.
Swift에서 Map 만들어보기 고차함수 중 가장 많이 사용하고있는 Map을 직접만들어서 사용하는 것을 구현해보도록 하겠습니다. swift의 맵을 정의하는 곳을 보면 transform이라는 클로져를 통해서 Generic타입으로 새로운 값을 가져올 수 있도록 되어 있습니다. func map(_ transform: (Self.Element) throws -> T) rethrows -> [T] extension Sequence { func customMap(_ transform: (Self.Element) throws -> T) rethrows -> [T] { let new = [T]() //새로운 그릇 do { // 순회하며 transform을 통해서 새로운 값을 전달받고 append try self.forEach{ new.append(t.. 2023. 5. 3.
Swift Optional unWrapping을 좀 더 간편하게 쓰는 법 옵셔널값을 언래핑해야 할 때나, closure안 캡처리스트 (ex: [weak self] in …) 약한 참조 접근을 많이 한다면 if let, guard let을 사용합니다. final class CapturedClass { private var afterExecutor: AfterExecutor private var optionalModel: OptionalModel? init(afterExecutor: AfterExecutor) { self.afterExecutor = afterExecutor } private func functionCall() { afterExecutor.after(time: 3) { [weak self] in self?.interalFunction() self?.interalF.. 2023. 4. 20.
Array에서 중복 제거하는 방법 Array에서 중복을 제거하는 방법은 새로운 배열을 만들고 넣을 때마다 Contain 되는지 체크 후 넣고 반환하는 방법이 있고, Set이라는 자료구조를 사용하여 처리하는 방법이 있습니다. 그 중 Set을 활용하여 중복을 제거해 보겠습니다. let duplicatedArray = [1, 2, 3, 4, 5, 5, 6, 2] // 예상 답: [1,2,3,4,5,6,2] let deduplicatedArray = Array(Set(duplicatedArray) // [2, 1, 3, 6, 4, 5] 10만 번의 요소가 있는 배열을 중복제거하고, set으로 바꾸면 순서가 보장되지 않으니, sorted로 원래 배열처럼 오름차순으로 바꿔주겠습니다. let array = (0.. 2023. 4. 19.