-
Swift Generic - 1Programming/Swift(iOS) 2021. 4. 6. 14:05728x90
모든 객체 지향 언어에는 Generic이라는 개념이 존재합니다.
제너릭을 지원하므로써, 동일한 로직이 갖고 있는 함수에 대해서 중복을 제거할 수 있습니다.
한번만 만들면되고, 아직 작성되지 않는 다양한 타입에 대해서도 대응이 가능합니다.
또한, 제너릭을 사용하므로써 Any 타입이 아니기때문에 실행시간에 다운 캐스트와 같은 불필요한 동작도 필요하지 않습니다.
오버로딩은 함수를 중복으로 구현하고, 전달인자를 다르게 하는것이고, 제너릭은 하나의 함수를 다양한 타입이 지원가능하도록 만드는 것입니다.
Generic의 구현 방식
1) 컴파일러가 코드를 생성하는 방식
=> C++, C#, Swift
: 타입 안정성 뿐만 아니라, '컴파일 타임 다형성'을 구현하는 것이 가능하다.
2) Any Type으로 생성하고, 컴파일러는 타입만 체크하는 방식
=> Java, Kotlin
: 타입의 안정성을 우선하는 방식
아래 코드는 함수 오버로딩으로, 같은 기능을 하는 함수이지만, 전달인자의 타입이 달라 따로 구현하는 경우입니다.
func firstAndLst(_ array:[Int]) -> (Int, Int) { return (array[0], array[array.count-1]) } func firstAndLst(_ array:[String]) -> (String, String) { return (array[0], array[array.count-1]) }
제너릭을 사용하면 두개의 함수가 하나로 가져갈 수 있습니다.
func firstAndLast<T>(_ array:[T]) -> (T, T) { return (array[0], array[array.count - 1]) }
'Programming > Swift(iOS)' 카테고리의 다른 글
Swift Generic - 3 (0) 2021.04.06 Swift Generic - 2 (0) 2021.04.06 Swift 오류처리 -3 (0) 2021.04.06 Swift 오류처리 - 3 (0) 2021.04.06 Swift 오류 처리 - 2 (0) 2021.04.06