제네릭

Haribo·2022년 3월 30일
2

Ios - Swift 문법 정리

목록 보기
8/15

제네릭이란?

쉽게 말하면 모든 타입을 가질 수 있도록 설정하는 것.

구조체를 한번 만들어서 살펴보자

struct myArray<someElement>{

    
    var elements = [someElement]()

    //생성자 
    init(_ elements: [someElement]){
        self.elements = elements
    }
}

생성자는 구조체라 만들지 않아도 되지만 표현을 위해서 만들었다.
항상 _ (언더바)를 이용하면 후에 출력할때 이름을 쓰지 않아도 된다는 것을 잊지말자!

제네릭 선언은 <> 안에 이름을 입력하면 된다. 지금은 someElement라고 했지만 보통은 T라고 정한다. 아마 Type? 이라는 뜻?

struct Friend { 
    var name: String
}

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

var myStringArray = myArray(["문","자","열"])
print("myStringArray: \(myStringArray)")

구조체를 하나 더 만들어 주고 그 밑에 두 가지의 다른 배열을 만들어 보자.
앞서 만들어놨었던 myArray는 제네릭 선언을 통해서 어떠한 형태라도 받을 수 있게 설정해놨다. 숫자, 문자, 문자열 까지도 문제없고 다음과 같은 형태도 받을 수 있다.

let friend_01 = Friend(name: "친구1")
let friend_02 = Friend(name: "친구2")
let friend_03 = Friend(name: "친구3")

var myFriendsArray = myArray([friend_01,friend_02,friend_03])
print("myFriendsArray: \(myFriendsArray)")

Friend라는 구조체에 세개의 let 상수를 넣고 제네릭 선언이 된 myArray에 위와 같이 넣어도 상관없다. 왜? 제네릭 선언을 해놨으니까. 코드들을 다시 합쳐보자

struct myArray<T>{

    //제네릭을 담은 빈 배열 -> 제네릭 선언은 <> 이런식으로 하고 어떠한 값이라도 모두 받겠다는 뜻이다. 보통은 T라고 넣는다. 
    var elements = [T]()

    //생성자 
    init(_ elements: [T]){
        self.elements = elements
    }
}

struct Friend { 
    var name: String
}

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

var myStringArray = myArray(["문","자","열"])
print("myStringArray: \(myStringArray)")

let friend_01 = Friend(name: "친구1")
let friend_02 = Friend(name: "친구2")
let friend_03 = Friend(name: "친구3")

var myFriendsArray = myArray([friend_01,friend_02,friend_03])
print("myFriendsArray: \(myFriendsArray)")

0개의 댓글

관련 채용 정보