Generic (제네릭)
은 어떠한 자료형이든 받고 싶을 때 사용하는, 범용 코드를 작성할 때 사용합니다.
이 특성 덕에 코드를 유연하게 작성할 수 있게 합니다.
제네릭
은<>
을 통해 나타내고, 이 안에 타입처럼 사용할 이름을 넣어주면 됩니다.
(T를 많이 넣으며, Type Parameter의 약자입니다.)
ex)
struct MyArray<SomeElement> {
// 제네릭을 담은 빈 배열
var elements : [SomeElement] = [SomeElement]()
// 생성자 자체는 만들지 않아도 되지만, 편의를 위해 생성
init(_ elements: [SomeElement]) { // 호출할 때, 이름을 넣지 않아도 된다
self.elements = elements
}
}
💬 다양한 타입을 print 해봅시다.
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: "몽이 누나"), "나", "다"])