[Swift 중급 #8] Swift KeyPath 정리, map(\.name)의 원리
\.name은 map의 축약 문법이 아니라 KeyPath라는 독립 타입의 값입니다. 프로퍼티 접근을 값으로 만든다는 말의 뜻과 읽기 전용·값 타입 쓰기·참조 타입 쓰기 세 계층, 실무 활용처를 정리했습니다.
읽어보기LANGUAGE · 52 ARTICLES
Swift 언어 글을 최신순으로 이어서 살펴봅니다.
전체 글
\.name은 map의 축약 문법이 아니라 KeyPath라는 독립 타입의 값입니다. 프로퍼티 접근을 값으로 만든다는 말의 뜻과 읽기 전용·값 타입 쓰기·참조 타입 쓰기 세 계층, 실무 활용처를 정리했습니다.
읽어보기프로퍼티 래퍼는 SwiftUI 문법이 아니라 Swift 5.1에 SE-0258로 들어온 언어 기능입니다. 컴파일러가 @Clamped를 어떻게 번역하는지, wrappedValue와 projectedValue($)의 정체, 남용 경계를 정리했습니다.
읽어보기Codable 자동 합성이 실제로 무엇을 만들어주는지부터, 실무에서 반드시 만나는 키 이름 불일치·날짜 포맷·중첩 구조·부분 실패 네 상황의 표준 처방과 DecodingError 디버깅까지 정리했습니다.
읽어보기map·filter·compactMap·flatMap·reduce 다섯 함수의 구분은 클로저가 무엇을 반환하느냐로 갈립니다. for 루프와의 선택 기준, 체이닝이 만드는 중간 배열, lazy 시퀀스가 푸는 문제를 정리했습니다.
읽어보기연관 타입(associatedtype)은 프로토콜에 뚫린 타입 빈칸입니다. 그 유명한 generic constraint 에러가 났던 이유와 SE-0309·SE-0346으로 제약이 풀린 과정, primary associated types 활용법을 정리했습니다.
읽어보기메서드 스위즐링은 셀렉터와 IMP를 잇는 연결표를 런타임에 맞바꾸는 기법입니다. 관례적인 구현 전체와 _cmd가 거짓말을 하는 부작용, 어디까지 써도 되는지의 경계를 정리했습니다.
읽어보기Swift 5.6 이후 코드를 보면 프로토콜 이름 앞에 some 아니면 any가 붙어 있습니다. some View, any Error, some Collection. 예전엔 프로토콜 이름을 그냥 타입 자리에 썼는데, 이제 컴파일러가 any를 붙이라고 경고하거나 에러를 냅니다.…
읽어보기Swift 코드에서 꺾쇠괄호 <T>를 처음 만나면 눈이 한 번 멈춥니다. 함수 이름 옆에 웬 대문자 알파벳이 붙어 있고, 문서를 열면 func map<T>( transform: (Element) -> T) -> [T] 같은 시그니처가 기다리고 있죠. 제네릭은 Swift 중급의…
읽어보기메서드 스위즐링 코드는 왜 하나같이 +load 안에 들어 있을까요? 비슷해 보이는 +initialize에 넣으면 안 되는 걸까요?
읽어보기Swift 관련 글이나 릴리스 노트를 읽다 보면 SE-0296, SE-0345 같은 코드가 자꾸 등장합니다. async/await를 소개하는 글엔 SE-0296이, if let name 축약 문법 얘기엔 SE-0345가 붙어 있죠. 이 번호의 정체가 뭘까요.
읽어보기Swift 표준 라이브러리를 열어보면 눈에 띄는 사실이 하나 있습니다. Int, Double, Bool 같은 기본 타입은 물론이고 String, Array, Dictionary, Set까지 전부 struct입니다. 다른 언어에서 당연히 클래스였던 것들이 Swift에서는 죄다 값…
읽어보기Swift에는 이상한 공존이 있습니다. 프로그래밍을 처음 배우는 사람이 Playgrounds에서 print("Hello") 한 줄로 시작하는 언어인데, 같은 언어로 제네릭과 매크로가 뒤엉킨 표준 라이브러리가 짜여 있어요. 초등학생용 코딩 교육 앱(Swift…
읽어보기