반응형
- 제네릭을 이용해 코드를 구현하면 어떤 타입에도 유연하게 대응할 수 있다.
- 제네릭으로 구현한 기능과 타입은 재사용하기도 쉽고, 코드의 중복을 줄일 수 있다.
- 제네릭을 사용하고자 할 때는 제네릭이 필요한 타입 또는 메서드의 이름 뒤의 홀화살괄호 기호 사이에 제네릭을 위한 타입 매개변수를 써주어 제네릭을 사용할 것임을 표시한다.
제네릭 타입
- 제네릭 타입을 구현하면 구조체, 클래스, 열거형 등이 어떤 타입과도 연관되어 동작할 수 있다.
- 제네릭 타입을 정해주면 그 타입에만 동작하도록 제한할 수 있어 안전하고 의도한 대로 기능을 사용하도록 유도할 수 있다.
import UIKit
// 제네릭 : 어떤 자료형이라든지 받을 수 있다.
// <> : 제네릭 표기
//보통은 SomeElement가 아닌 "T"로 입력한다.
struct MyArray<SomeElement>{
// 제네릭을 담은 빈 배열
var elements : [SomeElement] = [SomeElement]()
// SomeElement는 형태가 없음
// struct는 생성자가 없어도 되는데 편의상 만들었음
// 생성자
init(_ elements: [SomeElement]){
//elements가 들어오게 되면 내가 갖고 있는 elements에 넣어줌
self.elements = elements
}
}
struct Friend {
var name: String
}
struct PpakCoder {
var name: String
}
// MyArray를 생성할 때 안에 어떤 것이든 넣을 수 있다.
var mySomeArrray = MyArray([1,2,3])
print("mySomeArrray : \(mySomeArrray)")
// -> mySomeArrray : MyArray<Int>(elements: [1, 2, 3])
var myStringArrray = MyArray(["가", "나", "다"])
print("myStringArrray : \(myStringArrray)")
// -> myStringArrray : MyArray<String>(elements: ["가", "나", "다"])
let friend_01 = Friend(name: "철수")
let friend_02 = Friend(name: "영희")
let friend_03 = Friend(name: "수진")
var myFriendsArrray = MyArray([friend_01,friend_02,friend_03])
print("myFriendsArrray : \(myFriendsArrray)")
반응형
'모바일앱 > Swift' 카테고리의 다른 글
Enumeration (열거형) (0) | 2021.12.08 |
---|---|
Array (0) | 2021.12.08 |
Day11_extra_Tuple (0) | 2021.12.07 |
Day10 closure (0) | 2021.12.03 |
Day08 function parameter (0) | 2021.12.03 |
Day07 property_observer (0) | 2021.12.02 |
Day06 class_struct (0) | 2021.11.30 |
Day05 Unwrap_Optional (0) | 2021.11.29 |