Swift-Collections 패키지(Commonly used data structures for Swift) 에 있는 deque 라는 자료구조를 살펴보겠습니다. deque는 파이썬에서 오래전부터 많이 봐왔던 친구라.. 파이썬 문서랑 Swift 문서를 함께 살펴볼게요! [1] Deque 란 ? - deque는 "double-ended-queue" 의 줄임말입니다. 발음은 "deck" 이라고 합니다. - 양쪽 끝에서 삽입, 삭제가 가능한 큐입니다. (파이썬 문서에서는 'Deques are a generalization of stacks and queues' 라고 말합니다) - array 와 굉장히 비슷합니다. deque와 array 는 모두 ordered, random-access, mutable, ra..
WWDC 2022 > Embrace Swift Generics 에 나오는 내용입니다. Feed (사료, 먹이) 를 associatedtype으로 가지는 Animal 프로토콜을 예제로 사용합니다. [1] AS IS Farm에 feed라는 메소드를 만들고 싶을 때, 아래 두가지 중 하나의 방법으로 코드를 작성해줬어야했습니다. 메소드가 좀 복잡해보입니다. [2] TO BE 하지만!! 이제 opaque type인 some을 사용하여, 아래와 같이 간단한 메소드를 만들 수 있습니다. Swift 5.7부터는 some을 parameter type에도 쓸 수 있기 때문입니다 👏 (이전에는 프로퍼티 타입, 리턴 타입에만 쓸 수 있었음) [3] some 과 any (1) 하지만,, some은 제약이 있는데,, 아래와 같이..
[1] 용어정리 (출처: 이펙티브 코틀린) 애플 문서(Sequence and Collection)에 'eager' 이라는 단어가 나오는 데 이것을 이해하기 위해 이펙티브 코틀린 책내용을 가져왔습니다! ✔️ eager order (step-by-step) - 요소 전체를 대상으로 연산을 차근차근 적용한다. - 각 단계에서 연산이 이루어져 새로운 컬렉션을 만들어낸다. ✔️ lazy order (element-by-element) - 요소 하나하나에 지정한 연산을 한꺼번에 적용한다. - 최종 연산이 이루어지기 전까지는 각 단계에서 연산이 일어나지 않는다. ==> 사전적 의미로 lazy = 게으른, eager = 열렬한(열심인) 이기 때문에 저 두단어가 같이 쓰이는 것 같아요! [ eager vs lazy ] ..
Swift Docs > Attribute 를 보면, Swift의 inline 관련 attribute 로 inlinable과 usableFromInline 가 있습니다. [1] inline 한정자란? 우선 이펙티브 코틀린 책 내용을 통해 inline 개념을 먼저 알아봅시다! inline 한정자의 역할은 컴파일 시점에 '함수를 호출하는 부분'을 '함수의 본문' 으로 대체하는 것입니다. 일반적인 함수를 호출하면 함수 분문으로 점프하고, 본문의 모든 문장을 호출한 뒤에 함수를 호출했던 위치로 다시 점프하는 과정을 거칩니다. 하지만 inline 한정자를 붙여 함수를 만드면, 이러한 점프가 일어나지 않습니다. # 장점 모든 함수는 inline 한정자를 붙이면 조금 더 빠르게 동작합니다. 함수 호출과 리턴을 위해 점..
Swift Docs > Advanced Operators > Operator Methods, Custom Operators 내용을 기반으로 하고 있습니다. [1] Operator Methods Class와 Structure은 existing operators 에 대해 그들 자신의 구현을 제공할 수 있습니다. 이것은 'existing operators 를 overloading 한다' 라고 말할 수 있습니다. existing operators 목록은 Operator Declarations 문서에서 볼 수 있습니다. 하지만 모든 operator을 overload 할 수 있는 것은 아닙니다. 1️⃣ default assignment operator (=) 2️⃣ ternary conditional operato..
Swift Docs의 - Advanced Operators > Result Builders - Attributes > resultBuilder 를 기반으로 하는 내용입니다. [1] Result Builder 란? A result builder is a type you define that adds syntax for creating nested data, like a list or tree, in a natural, declarative way. A result builder is a type that builds a nested data structure step by step. result builder 는 선언적인 방식 (step by step으로 코드를 작성할 수 있는 방식) 으로 nested d..
10진수가 2진수로 어떻게 표현되는 지 확인하고 싶을 때 유용한 String 이니셜라이저가 있습니다. init(_:radix:uppercase:) 입니다. radix 기본 값이 10인데 2~36 까지 원하는 값을 넣어주며 사용할 수 있습니다. 저는 2진수로 변환하고 싶어서 radix를 2로 설정해주고 사용하겠습니다. ➕ 참고로 String뿐만아니라 Int도 radix를 받을 수 있는 이니셜라이저를 가지고 있습니다. (참고: init(_:radix:)) # Positive 4를 이진수로 출력해볼까요? 8-bit unsigned integer 타입인 UInt8을 사용해주었습니다. let positiveValue: UInt8 = 4 print(String(positiveValue, radix: 2)) // 1..
Swift Docs의 Implicitly Unwrapped Optionals 와 Unowned References and Implicitly Unwrapped Optional Properties 에 나오는 내용을 기반으로 하고 있습니다. [1] Implicitly Unwrapped Optional 이란? '암묵적으로(암시적으로) 언래핑한 옵셔널' 이라는 용어그대로 옵셔널이지만 언래핑하지 않고 사용할 수 있는 옵셔널을 말합니다. Optional을 만들 때 question mark(물음표)를 사용했다면 (ex. String?) Implicitly Unwrapped Optional을 만들 때는 exclamation point(느낌표) 를 사용해주면 됩니다. (ex. String!) 아래의 예제는 optiona..
Swift Docs > Opaque Types 에 나오는 내용입니다! Shape 라는 프로토콜이 있다고 해봅시다! protocol Shape { func draw() -> String } Triangle, Square처럼 이 프로토콜을 컨펌하는 타입을 만들 수 있습니다. struct Triangle: Shape { var size: Int func draw() -> String { var result: [String] = [] for length in 1...size { result.append(String(repeating: "*", count: length)) } return result.joined(separator: "\n") } } let triangle = Triangle(size: 3) pr..
Swift Docs > Protocol > Protocol Composition 을 읽다가 새로 알게된 내용! protocol composition 은 one class type 을 포함할 수 있다고 합니다 😲 이는 required superclass를 명시할 때, 사용할 수 있습니다. In addition to its list of protocols, a protocol composition can also contain one class type, which you can use to specify a required superclass. protocol Named { var name: String { get } } class Location { var latitude: Double var longi..
- Total
- Today
- Yesterday
- Flutter 로딩
- flutter 앱 출시
- flutter dynamic link
- Django Firebase Cloud Messaging
- drf custom error
- Django Heroku Scheduler
- 장고 URL querystring
- METAL
- 플러터 얼럿
- Sketch 누끼
- Django FCM
- PencilKit
- Watch App for iOS App vs Watch App
- DRF APIException
- Python Type Hint
- flutter deep link
- 장고 Custom Management Command
- Flutter Spacer
- Flutter Clipboard
- ipad multitasking
- Flutter Text Gradient
- flutter build mode
- 구글 Geocoding API
- github actions
- cocoapod
- Dart Factory
- ribs
- Flutter getter setter
- 플러터 싱글톤
- SerializerMethodField
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |