[swift] 제네릭을 사용하여 다양한 데이터 타입을 처리하는 방법은?
제네릭을 활용한 다양한 데이터 타입 처리
제네릭은 Swift에서 다양한 데이터 타입을 처리하고자 할 때 유용하게 사용되는 기능입니다.
제네릭의 개념
제네릭은 코드의 유연성을 높이고 중복 코드를 줄이기 위해 도입되었습니다. 제네릭을 사용하면 함수, 구조체, 열거형 등을 선언할 때 특정 데이터 타입을 지정하지 않고, 재사용 가능한 코드를 작성할 수 있습니다.
제네릭 함수의 선언
제네릭 함수를 선언할 때는 함수명 뒤에 <T>
와 같이 꺾쇠 괄호 안에 임의의 식별자를 지정합니다. 이 식별자는 해당 함수 내에서 임시적으로 사용될 데이터 타입을 나타냅니다.
func swap<T>(_ a: inout T, _ b: inout T) {
let temp = a
a = b
b = temp
}
위 코드에서 <T>
는 임의의 데이터 타입을 나타냅니다. 이후 a
와 b
의 데이터 타입은 함수가 호출될 때 결정됩니다.
제네릭 타입
제네릭을 사용하여 구조체나 클래스를 선언할 수도 있습니다.
struct Stack<Element> {
var items = [Element]()
mutating func push(_ item: Element) {
items.append(item)
}
mutating func pop() -> Element {
return items.removeLast()
}
}
위 코드에서 Stack
은 제네릭을 사용하여 임의의 데이터 타입을 요소로 갖는 스택을 나타내는 구조체입니다. <Element>
는 임의의 데이터 타입을 나타냅니다.
제네릭을 활용하면 유연하고 재사용 가능한 코드를 작성할 수 있으며, 함수나 타입을 선언할 때 특정한 데이터 타입을 결정하지 않고 유연하게 다룰 수 있는 장점이 있습니다.