본문 바로가기
IOS - Swift

Swift 기초문법 - Generic

by 게게겍 2022. 9. 14.

📖 Generic (제네릭)

📌 Generic이란

Generic (제네릭) 은 어떠한 자료형이든 받고 싶을 때 사용하는, 범용 코드를 작성할 때 사용합니다.
이로인하여, 유연하고 재사용 가능한 함수와 타입의 코드를 작성하는 것이 가능해집니다.


📌 제네릭 함수

제네릭 은 <> 을 통해 나타내고, 이 안에 타입처럼 사용할 이름을 넣어주면 됩니다.
(Type Parameter의 약자인 T를 주로 사용합니다.)
또한, 대문자 카멜 케이스로 이름 짓습니다. 대문자로 된 이름은 값(value)이 아니라 타입(type)을 의미합니다.

ex)

struct MyArray<SomeElement> {
    
    // 제네릭을 담은 빈 배열
    var elements : [SomeElement] = [SomeElement]()
    
    // 생성자 자체는 만들지 않아도 되지만, 편의를 위해 생성
    init(_ elements: [SomeElement]) { // 호출할 때, 이름을 넣지 않아도 된다
        self.elements = elements
    }
}

💬 다양한 type을 예로들어보겟습니다 .

var mySomeArray = MyArray([1,2,3])
print("mySomeArray : \(mySomeArray)")

var myStringArray = MyArray(["가", "나"])
print("myStringArray : \(myStringArray)")

>>> mySomeArray : MyArray<Int>(elements: [1, 2, 3])
myStringArray : MyArray<String>(elements: ["가", "나"])

💬 구조체를 선언하고 print 해봅시다.

struct Friend {
    
    var name : String
    
}

let friend_01 = Friend(name: "코더")
let friend_02 = Friend(name: "빡코더")

var myFriendsArray = MyArray([friend_01, friend_02, "나", "다"])
print("myFriendsArray : \(myFriendsArray)")

>>> myFriendsArray : MyArray<Any>(elements: [__lldb_expr_60.Friend(name: "코더"), __lldb_expr_60.Friend(name: "빡코더"), "나", "다"])

'IOS - Swift' 카테고리의 다른 글

Swift 기본문법 - 상속  (0) 2022.09.15
Swift 기초문법 - Closure  (0) 2022.09.14
Swift 기초문법- struct와 class의 차이  (0) 2022.09.14
swift 기초문법 - enum  (0) 2022.09.12
swift 기초문법 - 콜렉션과 foreach  (0) 2022.09.12