protocol 학습하기 (4) [ any, some ]
·
프로그래밍언어/swift
저번 포스팅에서 우리는 associatedtype을 통해 프로토콜안에서 범용 타입을 편하게 사용하는 방법을 학습했다. 이번 학습은 associatedtype을 사용할 때 발생하는 문제점과 해결방안을 알아보자. 문제점associatedtype이 정의된 protocol은 리턴 또는 변수 타입으로 사용될 수 없는 불편함이 있다. protocol SomeProtocol { associatedtype T : Equatable // 제약 조건 도 줄 수 있음}protocol SomeProtocol2 {}var prop: SomeProtocol // ❌ associatedtype가 정의되서 변수 타입으로 사용 불가func someFunc() -> SomeProtocol {} // ❌ associatedtype..
protocol 학습하기 (3) [ associatedtype ]
·
프로그래밍언어/swift
저번 포스팅에서 프로토콜의 generic, 합성, 채택 체크등 조금 더 확장된 개념을 학습했다.이번에는 저번 학습 주제 중 generic을 프로토콜에서 편하게 사용할 수 있는 associatedtype에 대해 학습해보자등장 배경프로토콜에서 generic 사용할 때 번거로움이 있다.왼쪽 사진과 같이 프로토콜 자체에 제네릭을 선언할 수 없고 만약 제네릭을 사용하고 싶으면  오른쪽 사진과 같이 타입이더라도  함수 하나하나 새로 명시를 해줘야한다. 역할프로토콜에 사용하는 범용 타입의 역할을 한다. 특징1) associatedtype 역시 제네릭과 마찬가지로 제약 조건을 줄 수 있다.    여기서 제약조건이란 프로토콜 채택과 클래스 상속 등을 의미한디. 2) 채택 할 때 typealias를 이용하여 명확한 타입을..
protocol 학습하기 (2) [ generic, 합성, 채택 체크 ]
·
프로그래밍언어/swift
프로토콜에 제네릭 및 제약조건 적용하기제네릭 (범용 타입)은 런타임 시 타입을 결정하게하여 함수 또는 변수에 상황에 맞는 타입을 사용할 수 있게하는 기능이다. 제네릭 역시 프로토콜에 적용 할 수 있으며, 프로토콜 타입을  재네릭으로 사용할 수 있다. 1) 프로토콜에 제네릭 사용하기 기본 제네릭 패턴 또는 where과 조합해서 쓸 수 있다.protocol SomeProtocol { func f1(param: T) // 단순 제네릭 이용 func f2(param: T) where T: Equatable // 제네릭 + where 이용 } 2) 제네릭에 프로토콜 타입으로 사용하기프로토콜 역시 제네릭 타입으로 사용할 수 있다.protocol SomeProtocol { ..
protocol 학습하기 (1) [ property, method, extension ]
·
프로그래밍언어/swift
protocol이란 ?프로토콜이란 반드시 구현해야하는 요구사항을 미리 정의하는 타입이다.class, struct, enum, 심지어 protocol도 또다른 protocol을 채택할 수 있다. 참고애플 공식문서 property 정의하기먼저 property를 정의할 때 protocol에서 어떤식으로 요구사항을 정의하는 지 알아보자 1) var로 시작해서 변수명과 타입을 지정한다. 2) 연산 프로퍼티를 이용하여 `get`과 `set`의 역할을 부여한다. 3) get set일 경우 let property와 getter only computed property는 사용할 수 없다. protocol SomeProtocol { var prop1: Int { get } // 읽기 전용 var prop..