
오늘도 강의를 통해 배운 강의 속 지식! struct vs. class 다른 강의를 들을 때, 왠만하면 struct를 쓰라는 이야기를 들었었는데! 오늘 강의를 들으니, 훨씬 이해가 잘 갔다랄까요? 그래서 정리해봅니다!! 1. struct vs. class 복사 2. struct vs. class 인스턴스 상수/변수 시작해!! 1. struct vs. class 복사 우선 아래 두 개의 구조체와 클래스를 만들어줄게용! struct StructHero { var name: String var universe: String } class ClassHero { var name: String var universe: String init(name: String, universe: String) { self.nam..

오늘은 접근제어에 대해 공부해볼게요! 접근제어는 말 그대로 접근을 제어하는 건데요 ㅎㅎ 타입, 변수/상수, 메서드 등에 접근할 수 있게/없게 제한하는 키워드입니당. 5가지의 제어 수준이 있는데요. 1. private 단어에서도 느껴지시져? 가장 접근하기가 어려운(?) 수준입니당. 같은 스코프({ }) 내에서만 접근이 가능하쥬 2. fileprivate private보다는 발전된 수준의 접근 가능 단계입니당. 같은 file 내에서는 접근이 가능해서 file이라고 붙인 것 같아요. 3. internal (default) 우리가 지금까지 접근제어를 신경쓰지 않았지만, 사실은 기본값이 internal이었어요. 따로 명시를 하지 않으면 항상 internal 수준을 갖는거져. internal은 같은 모듈 내에서 접..

Tuple. 분명히 2번이나 배운 개념인데, 3번째 배울때도 또 새롭지 모에여? 이젠 안되겠다 싶어서 정리해봅니다. 1. 튜플의 생김새 2. 튜플의 요소에 접근하기 3. 튜플 요소의 값 바꾸기 4. Named-Tuple 5. 튜플 분해하기 6. 튜플의 활용 1. 튜플의 생김새 Tuple은 아주 신기한 놈이라고 할 수 있겠어요. 여러 타입의 값들은 한 곳에 저장할 수가 있거든요. 어떻게 생겼는지 볼까요? let model = ("iphone", 13, "GB", 15.3) String, Int, Double을 전부 model이라는 상수에 담을수가 있어요. 그럼 model은 어떤 타입일까요? 아주 신기한 타입이져? 2. 튜플의 요소에 접근하기 그럼 각 요소들에는 어떻게 접근할 수 있을까요? model을 쓰고..

오늘은 배우긴 배웠지만 한 번도 제대로 써보지 못했던,,, 그러던 중 Udemy를 통해 또 배운 computed property에 대해서 공부해볼게요. 아래와 같은 속성이 두개 있다고 할게여. 우선 이 두 놈은 stored property(저장속성)입니다. 피자의 인치에 -4를 하면 피자를 몇 조각으로 나눌 수 있는지 계산할 수가 있대여(강의에서,,ㅎ) let pizzaInIncheds: Int = 12 // 피자 크기 var numberOfSlices: Int = 8 // 전체 피자 갯수 // 피자 인치에 따른 피자 슬라이스의 갯수 func calculatePizzaSlices() { numberOfSlices = pizzaInIncheds - 4 } calculatePizzaSlices() print..

지난 번 UserDefaults를 공부하면서 했던 약속,,,(아무도 안 보지만,,) 나와의 약속,,, Singleton에 대한 공부입니다. 스따뚜~🤡 Singleton은 한 마디로 정리하자면, "유일하게 존재하는 객체"에요. ※객체라는 말은 class의 인스턴스에만 적용되는 말인데요, struct의 인스턴스에는 쓰지 않아요. Singleton은 static let 키워드를 붙여서 만들어요. 엄밀히 말하자면 type property라고 할 수 있져. 아래 Color 클래스를 한 번 볼까요? class Color { var color = "Blue" } let myColor1 = Color() print(myColor1.color) // Blue let myColor2 = Color() myColor2.co..

지난 번 Alamofire 글을 쓰면서 만났던 Result Type이 hoxy 기억나시나요? 오늘은 Result Type에 대해서 알아보고자 해요. 예전에 앨런님께 배우긴 하였으나, 늘 그렇듯이 중요한 건 기억이 안나니까요 ㅎㅎ 스따뚜🥴 Result Type은 에러를 처리할 때 사용하는 하나의 에러 처리 방법이에요. 에러를 throws하는 경우, do-catch로 처리하는 번거로움이 있지만 Result Type의 경우, 성공(success)과 실패(failure) 두 가지로 나눠 처리할 수 있기 때문에 훨씬 명확해요. Result Type의 공식문서 정의를 보면, 아래와 같아요. 열거형으로 선언된 Result Type에는 2개의 값이 있습니다. case success와 case failure이죠. enu..

오늘은 유용하게 쓰이는 고차함수에 대해 알아볼게욧! map(_:) map함수는 기존의 배열, 딕셔너리 등을 매핑하여 새로운 배열로 리턴해주는 함수에여. 매핑 방식은 제가 정해주면 됩니다요. 제네릭형태()로 선언이 되어있기 때문에, 어떤 타입에 써도 상관이 없겠져?! 그럼 일단 한 번 예제를 볼까요? 아래와 같이 단순하게 1~5까지 있는 배열을 만들었어요. let numbers = [1, 2, 3, 4, 5] 이 배열에 점을 찍고 map 메서드를 실행해보면? 위와 같이 transform이라는 파라미터를 받을 수 있는 클로저가 나온다리~ map의 정의에서는 제네릭 형태였지만, numbers라는 배열이 Int 형태기 때문에 placeholder 부분을 보면 (Int)로 바뀐 거 보이시져? 그럼 저는 numbe..

오늘은 강의를 듣던 중 넘나 유용해서 정리하게 된 CaseIterable protocol 특집! CaseIterable는 못참지,,, 시작~ CaseIterable protocol 이 프로토콜은 "모든 값들은 컬렉션으로 제공해주는 타입"이에요. 보통 연관값(associated value)가 없는 열거형(Enum) 타입에서 주로 사용하쥬. 이 타입을 사용하면 allCases라는 속성을 통해서 모든 케이스들의 컬렉션에 접근할 수가 있어요. 뭔말이에유? 예시 ㄱㄱㄲㄲ ㄲㄱㄲㄱ 여기 CaseIterable 프로토콜을 채택한 열거형이 있습니다. (연관값 없음) enum CompassDirection: CaseIterable { case north, south, east, west } 이렇게 CaseIterable..
- Total
- Today
- Yesterday