Generic

제네릭은 추상 코드를 작성하는 기본 도구로 코드가 진화할 수록 복잡성을 관리하는데 매우 중요하다.

추상화 (Abstraction)

Abstraction seperates ideas from specific details

추상화는 아이디어를 구체적인 세부 사항과 구분합니다.

let startRadius = startAngle * .pi / 180.0
let endRadius = endAngle * .pi / 180.0
func radians(from degrees: Double) -> Double {
	degrees * .pi / 180.0
}

let startRadius = radians(from: startAngle)
let endRadius = radians(from: endAngle)
<T> where T: Idea

Generic을 실제로 적용해보자

  1. Concrete Type으로 Modeling하기
  2. Concrete Type의 공통 기능을 식별하고