@retroactive
·
Programing Langauge/swift
👋 들어가기 전@retroactive란 키워드를 일하다가 마주쳤는데 무슨 역할인지 몰라서, 한번 살펴보자.🏁 학습할 내용retroactive 어원등장 계기역할🔎 @retroactive 📖 어원처음 들어보는 단어인데, 찾아보니 소급적인 뜻이다. 소급적인이라는 한국 단어도, 일상샐황에서 크게 보이지는 않는데, 계약서나 법률에서 찾아볼 수 있다. AI 정리에서 핵심내용은, 새로 시행되는 어떤 규칙이, 과거 어느시점에도 효력을 준다는 의미 🎉 등장 계기swift에서는 타입 정의와 프로토콜 정의가 서로 다른 모듈에 있어도, 제 3자에의해 해당 타입을 특정 프로토콜 준수 가능하도록 확장할 수 있다. 이때, 주의할점은 swift 런타임에서 하나의 타입이 동일한 프로토콜을 서로 다른 모듈에서 확장해서 사용하..
@dynamicMemberLookup
·
Programing Langauge/swift
👋 들어가기 전오랜만에 wow느낌을 받은 attribute를 하나 학습해보려한다. 바로 본론으로 들어가보자.🏁 학습할 내용불편함@dynamicMemberLookup역할원리실습주의할 점💢 나만 불편해?다들 이런 경험이 있을거다. 아래 두 코드를 보면, 둘다 접근하고 싶은데이터가, 어떤 객체안에 private 형태로 존재할 때우리는 울며 겨자먹기로, public으로 풀거나, 별도 함수나 property를 만들어서 해결에 왔다. 그게 직관적이고 좋은 방법인건 사실이다.struct JSON { private var data: [String: Any] = [:]}let json = JSON()// ✅ public으로 바꿔야함print(json.data["name"]) print(json.data["age"..
가독성 좋게 정규식 설계하기
·
Programing Langauge/swift
👋 들어가기 전즐겨보는 유튜버 이도원님 영상 중 개네마리 1주년 영상이 있다.1주년 영상 답게 영상 시간도 길고, 재밌는 부분을 많은 타임링크 형태로 남겨준다. 개발자면, 해당 타임링크는 일정 정규식으로 충분히 잡을 수 있다. 하지만 정규식 작성이 항상 어려웠던 이유는 바로 가독성이 너무 떨어진다는 점.. 하지만 이번에 좋은 방법을 찾았다. 그 방법을 남겨보려고한다.🏁 학습할 내용타임링크 조건 verbose 모드 적용 verbose란정규식에서 verbose적용 후결과자주 쓸만한 정규식 패턴 모음⏰ 타임링크 조건xxxx:xx:xx 형식시간은 최대 4자리 (그 전에 숫자들 있으면 안됨)분은 0 ~ 59분까지, 한 자릿수일 때 앞에 0은 optional초 역시 분과 같음, 0 ~59초, 한자릿수일 때 앞..
매크로
·
Programing Langauge/swift
👋 들어가기 전슬슬 새로운 개념들을 조금 씩 배워나가야할 것 같다.."매크로" 해야지 해야지 했는데 선 뜻 시작하기 힘들었던 개념인 것 같다. 이번 포스팅 역시 한번에 작성이 끝나지 않을 수 있을 것 같은 예감이 든다. 시작이 반이니 일단 시작해보자.🏁 학습할 내용Overview매크로 의미등장 계기매크로의 종류동작 방식Freestanding MacroAttached Macro매크로 만들기SwiftSyntaxSwiftSyntaxMacrosSwiftSyntaxBuilder구현부 파헤치기선언부 파헤치기📝 Overview✅ 매크로 의미컴퓨터 과학에서 매크로 의미는 다음과 같다.입력 시퀀스가 출력 시퀀스로 매핑되는 규칙 또는 패턴을 의미 이 때 사용되는 매핑 패턴(과정)을 Source code에서 확장하는 ..
Mirror
·
Programing Langauge/swift
✊Mirror란한번도 쓰지 않았지만 항상 프로젝트를 하면 팀원이 쓰던 녀석.. 나도 한번 써보자.. 공식문서를 살펴보자.A representation of the substructure and display style of an instance of any type. 모든 타입의 인스턴스의 하위 구조 및 display stlye를 나타내는 리플렉션 API라고 한다. 모든 타입이라고하는데 진짜 그런 지 살펴보자. Mirror.DisplayStyle을 보면 swift의 거의 모든 타입을 커버하고 있다. ☝️주요 기능주요 기능은 다음과 같다.프로퍼티와 값 탐색타입 확인디버깅 및 로깅타입 정보 추출1️⃣ 프로퍼티와 값 탐색chidren을 통해 인스턴스의 모든 프로퍼티와 값을 탐색할 수 있다.struct Pers..
@inlinable
·
Programing Langauge/swift
👋 들어가기 전이번시간은 @inlinable이다. 생각보다 조금 어려운 개념이 있으니 차근차근 살펴보자.✊없다면 ?우리는 보통 메서드를 호출할 때 스택에 현재 상태를 보내고 상태를 저장하고다시 돌아오는 등 다양한 오버헤드가 존재한다.☝️@inlinable역할말 그대로 위에서 설명한 오버헤드를 줄이기위해 호출하는 쪽에메서드 내용 전체를 삽입한다.사용 영역함수메서드계산 프로퍼티subscript생성자장점오버헤드를 낮춰 컴파일러 최적화 가능모듈 경계를 넘어 사용 가능단점구현 내용이 공개됨코드 크기가 증가재귀 함수에서는 오히려 비효율적internal, public만 사용 가능✌️@usableFromInline전체적인 느낌은 위에 @inlineable과 동일하다 차이점만 간단하게 명시한다.동일한 모듈 내에 있는 ..