Swift - Generic

SDTCOW·2025년 3월 15일

Swift

목록 보기
1/7

안녕하세요.

오늘은 Let's Swift 2023에서 권문범님의 객체가 함수를 만났을 때 영상을 보던 중 Generic의 이해도가 많이 낮은 것 같아서 Swift의 Generic에 대해 공부한 내용을 작성해보려고 합니다.
제네릭을 활용하면 코드의 재사용성을 높이고, 타입에 유연한 함수와 구조체를 만들 수 있다고 합니다.

1. 제네릭(Generic)이란?

Swift에서 제네릭은 타입에 관계없이 사용할 수 있도록 하는 기능입니다. 예를 들어, 특정 타입에만 동작하는 함수가 있을 때 다양한 타입에서 사용하려면 여러 개의 함수를 만들어야 하지만 제네릭을 사용하면 같은 로직을 다양한 타입에서 활용할 수 있습니다.

2. 제네릭 함수

func changeValue<T>(_ a: T, _ b: T) {
    let temp = a
    a = b
    b = temp
}

var first = 10
var second = 20
swapValues(&first, &second)
print(first, second) // 20, 10
/*
<T>: 타입을 일반화하기 위한 임의의 타입
T 타입을 사용하기 때문에 Int, String, Double 등 다양한 타입에서 사용 가능
*/

3. 제네릭을 활용한 Stack 구현

제네릭은 함수뿐만 아니라, struct나 class에서도 사용할 수 있습니다.

struct Stack<T> {
    private var elements: [T] = []
    
    mutating func append(_ item: T) {
        elements.append(item)
    }
    
    mutating func popLast() -> T? {
        return elements.popLast()
    }
    
    func getLast() -> T? {
        return elements.last
    }
}

var intStack = Stack<Int>()
intStack.append(10)
intStack.append(20)
print(intStack.popLast()!) // 20
print(intStack.getLast()!) // 10

var stringStack = Stack<String>()
stringStack.append("Swift")
stringStack.append("Generics")
print(stringStack.popLast()!) // Generics

4. 정리

  • 제네릭을 사용하면 코드 재사용성이 증가하고, 타입 안정성을 유지하면서도 유연한 코드를 작성할 수 있음
  • 제네릭 함수를 사용하면 다양한 타입에서 동작하는 함수를 만들 수 있음
  • 제네릭 구조체/클래스를 활용하면 데이터 타입과 상관없이 사용할 수 있는 자료구조를 만들 수 있음
  • 프로토콜과 함께 사용하면 특정 조건을 만족하는 타입만 허용 가능

이렇게 한 번 간단하게? Generic에 대해 알아봤습니다.
다음 게시글에는 영상에서 봤던 것처럼 API통신에 Generic을 활용하는 방법에 대한 글을 작성해보겠습니다.

profile
iOS 개발자가 되고싶은 사람

0개의 댓글