본문 바로가기

Tech/iOS

[iOS]Day45 - Generic

728x90

 

아이디어가 나오지 않는다

주말에는 좀 나왔으면 하는 바램이다


Generic

타입에 유연하게 대응하기 위해 사용한다

Generic으로 구현한 타입과 기능은 재사용이 쉽고 코드의 중복을 줄일 수 있기 때문에 깔끔한 표현이 가능하다

제네릭 사용 전
제네릭 사용

*T : TypeParameter

 

제네릭에서는 일반적으로 TypeParameter에 T, U, K 사용하며 플레이스 홀더와 같은 역할을 한다

*타입의 종류는 알려주지 않지만 제네릭으로 이루어진 함수를 사용할 때 T에 들어가야하는 타입은 모두 같아야 한다

제네릭은 위처럼 2개의 파라미터 사용도 가능하다

 

*Type Constraints

타입에 제약조건을 줄 수 있다

Numeric 프로토콜을 채택하지 않으면 제네릭 함수를 사용하지 못한다

Numeric 프로토콜을 채택했다면 함수를 사용할 수 있다

 

*inout Parameter

파라미터로 전달 받은 값은 함수 내에서 변경이 불가능하다

위의 코드처럼 a,b의 파라미터 값을 바꾸고 싶다면 inout 파라미터 앞에 붙여주어야 한다

 

*Equatable Protocol

Equtable Protocol을 준수하지 않으면 

one.name == two.name은 오류가 난다

비교 기준을 모르기 때문이다

 

Equtable Protocol을 채택할 경우 작성해야하는 규약이 나오는데 규약을 준수한 코드 작성 후 

Equtable Protocol 채택 전 오류가 발생했던 one.name == two.name 등위연산자의 연산이 가능하게 된다

'Tech > iOS' 카테고리의 다른 글

<FOOCA> 출시 회고  (1) 2022.10.04
[iOS]Day45 - TypeCasting  (0) 2022.08.18
[iOS] Day44 - Storyboard 없이 코드로 UI 설정해보기(Feat. Snapkit)  (0) 2022.08.17
[iOS]Day43 - UIPageViewController  (0) 2022.08.16
[iOS]Day43 - Custom FrameWork  (0) 2022.08.16