본문 바로가기
모바일앱/Swift

Day09 generic

by GeekCode 2021. 12. 3.
반응형
  • 제네릭을 이용해 코드를 구현하면 어떤 타입에도 유연하게 대응할 수 있다.
  • 제네릭으로 구현한 기능과 타입은 재사용하기도 쉽고, 코드의 중복을 줄일 수 있다.
  • 제네릭을 사용하고자 할 때는 제네릭이 필요한 타입 또는 메서드의 이름 뒤의 홀화살괄호 기호 사이에 제네릭을 위한 타입 매개변수를 써주어 제네릭을 사용할 것임을 표시한다.

제네릭 타입

  • 제네릭 타입을 구현하면 구조체, 클래스, 열거형 등이 어떤 타입과도 연관되어 동작할 수 있다.
  • 제네릭 타입을 정해주면 그 타입에만 동작하도록 제한할 수 있어 안전하고 의도한 대로 기능을 사용하도록 유도할 수 있다.
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