Protocol
-
Swift - Hashable ProtocolProgramming/Swift 2022. 1. 16. 19:38
안녕하세요 BeePeach입니다 :) 오늘은 기본적인 Protocol 중에 마지막 Hashable 프로토콜에 대해서 공부해보려고 합니다. 여기서 Hash란 아주 간단하게 설명하자면 어떠한 값을 특정 알고리즘을 통해서 Integer값으로 변환시키는 것을 의미합니다. 변환 알고리즘에는 종류가 아주 많습니다! (심심하면 한번 찾아보셔도 좋습니다.. SHA가 유명합니다.) 위 그림은 문자열을 특정 알고리즘함수를 통해서 00 ~ 15까지 변환하는 작업을 표현했습니다. 그리고 2개의 값이 다른데 같은 hash값으로 변환된 문제를 그림으로 표현한 것입니다. (이를 collision이라고 합니다.) 암호화에 사용하고 어쩌구 저쩌구 이런 건 다 제쳐두고 간단하게 어떤 값을 Interger값으로 변환시키는거구나~ 라고만 ..
-
Swift - Comparable ProtocolProgramming/Swift 2022. 1. 15. 23:42
안녕하세요 BeePeach입니다 :> 오늘 공부해볼 내용은 지난 포스팅에 이어서 기본적인 Protocol 중에 하나인 Comparable 프로토콜입니다. Equatable과 마찬가지로 우리가 기본적인 Type들의 대소비교를 할 수 있던 것은 기본적으로 제공해주는 Type들이 Comparable을 채용하고 있었기 때문입니다. 그럼 같이 한번 공부해보도록 해요! Adopting a Protocol Using a Synthesized Implementation Comparable은 Equtable과는 조금 다른 부분이 있습니다. 두 값이 같다 다르다와 어느값이 더 크다 작다는 다른 문제입니다. 무엇을 기준으로 더 크거나 작다는것일까요?? 예시를 들어보겠습니다. A라는 사람은 키가 180cm이고 몸무게가 85k..
-
Swift - Equatable ProtocolProgramming/Swift 2022. 1. 14. 18:17
안녕하세요 BeePeach입니다 :) 오늘 공부해볼 내용은 기초적인 Protocol 중 하나인 Equatable 프로토콜입니다. 우리가 비교 연산자를 통해서 Int, String 등 기본적인 Type을 서로 비교할 수 있던 것은 Swift Standard library에서 제공하는 대부분의 Type들은 기본적으로 Equatable 프로토콜을 채용하고 있기 때문입니다. 그럼 우리가 직접 만든 Custom Type들은 선언할 때 Equtable을 추가해주지 않는데 비교가 가능할까요?? 우리가 주로 만드는 Type은 Class, Struct, Enum이 있을 텐데 어떻게 되는지 하나하나 알아보도록 하겠습니다. Adopting a Protocol Using a Synthesized Implementation A..
-
Swift - Protocol ExtensionProgramming/Swift 2022. 1. 12. 18:50
안녕하세요 BeePeach입니다 :) 오늘 공부해볼 내용은 Protocol Extension입니다. Protocol도 Type이기 때문에 extension을 이용해서 확장시킬 수 있습니다. Extension을 활용하면 아래의 기능을 추가시킬 수 있습니다. Protocol Default Implenentation(기본구현) 추가 Constraints (제약) 추가 그럼 하나하나씩 공부해볼까요?? Extension 우리가 이전에 배웠던 extension의 가장 기본적인 사용법은 Type에 없던 멤버들을 추가시키는 것이었습니다. Extension을 이용하면 protocol에 computed property, method, subscript를 추가시킬 수 있습니다. 그럼 여기서도 protocol에 없던 요구사항..
-
Swift - Protocol Optional RequirementProgramming/Swift 2022. 1. 4. 19:55
안녕하세요! BeePeach입니다 :) 오늘 다뤄볼 내용은 Protocol Optional Requirement(선택적 요구사항)입니다. 먼저 헷갈릴 수 있는 단어를 확실하게 하고 가겠습니다. Optional requirement에서의 Optional은 우리가 이전에 공부한 Optional Type을 의미하는 게 아닙니다. 여기서 Optional은 단어 그대로 선택적이라는 형용사적 의미이고 우리가 이전에 Int?과 같이 사용하던 Optional은 형용사적 의미가 아니라 Optional Type을 지칭하는 명사적 의미입니다. 지금까지 공부한 protocol은 requirement(요구사항)를 선언하고 Type이 protocol을 채용한다면 반드시 요구사항을 구현해야 했습니다. 선택적 요구사항이란 Type이..
-
Swift - Protocol CompositionProgramming/Swift 2022. 1. 3. 11:20
안녕하세요 BeePeach입니다 :) 오늘 공부해볼 내용은 protocol composition입니다. Composition의 의미가 애매할 수 있는데 합성, 조합을 의미한다고 생각하면 됩니다. 이미 존재하는 Protocol을 조합해서 여러 개의 protocol을 동시에 만족시키는 Type을 만들어냅니다. 주의할 점은 새로운 Type을 만든 것은 아니고 기존에 존재하는 것을 조합했을 뿐입니다. Protocol Composition 헷갈릴 수 있는 부분을 먼저 집고 넘어가는게 좋을 거 같네요. 이전에 protocol을 채용할때 TypeName 옆에 : (colon)을 적고 , (comma)로 구분해서 여러 개의 protocol을 채용할 수 있다고 했습니다. 그럼 이게 Compostion(조합)아니야?? 여..
-
Swift - Protocol InheritanceProgramming/Swift 2022. 1. 2. 12:24
안녕하세요 BeePeach입니다 :> 오늘은 Protocol의 Inheritance(상속)에 대해서 공부를 해보려고 합니다. Class의 특징 중에 하나는 상속이 가능하다는 점이었습니다. Protocol도 class와 비슷하게 상속이 가능합니다. 그럼 Protocol에서 상속을 어떻게 사용하는지 같이 공부해보도록 하겠습니다. Protcol Inheritance Protocol의 상속은 class의 상속과 문법이 똑같습니다. 다만 차이점은 protocol 상속은 여러 개의 protocol 상속이 가능합니다. 여러 개를 상속할 때는 , (comma)로 구분해주면 됩니다. 어려울 부분이 없으므로 바로 예제를 보겠습니다. Readable과 Writable 프로토콜을 선언하고 이를 동시에 상속하는 TextFile..
-
Swift - Protocol as TypeProgramming/Swift 2021. 12. 29. 23:02
안녕하세요 BeePeach입니다 :0 이번 포스팅에서 공부해볼 주제는 Protocol Type입니다. Protocol에서 기능들을 직접 구현을 할 수는 없지만 프로토콜을 Type으로 사용할 수 있습니다. 이를 다른 말로 existential type이라고 합니다. 이 말은 '프로토콜을 (conform)따르는Type이 존재한다.' 라는 말에서 유래했습니다. Protocol도 Type이기 때문에 protocol의 이름을 지어줄 때 UpperCamelCase 컨벤션을 따른 것입니다. Protocol Type 위에서 설명했듯이 protocol도 First Class Citizen입니다. (First Class Citizen에 대해서 모르신다면 여기를 참고해주세요.) First Class Citizen이기 때문에..