안녕하세요.
오늘은 Let's Swift 2023에서 권문범님의 객체가 함수를 만났을 때 영상을 보던 중 Generic의 이해도가 많이 낮은 것 같아서 Swift의 Generic에 대해 공부한 내용을 작성해보려고 합니다.
제네릭을 활용하면 코드의 재사용성을 높이고, 타입에 유연한 함수와 구조체를 만들 수 있다고 합니다.
Swift에서 제네릭은 타입에 관계없이 사용할 수 있도록 하는 기능입니다. 예를 들어, 특정 타입에만 동작하는 함수가 있을 때 다양한 타입에서 사용하려면 여러 개의 함수를 만들어야 하지만 제네릭을 사용하면 같은 로직을 다양한 타입에서 활용할 수 있습니다.
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 등 다양한 타입에서 사용 가능
*/
제네릭은 함수뿐만 아니라, 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
이렇게 한 번 간단하게? Generic에 대해 알아봤습니다.
다음 게시글에는 영상에서 봤던 것처럼 API통신에 Generic을 활용하는 방법에 대한 글을 작성해보겠습니다.