[swift] 제네릭 사용하기
제네릭은 스위프트에서 코드를 유연하게 작성하고 재사용하기 위한 강력한 도구입니다. 제네릭을 사용하면 함수, 메서드, 클래스, 열거형 등을 제네릭한 형태로 작성하여 다양한 데이터 타입에 대해 동일한 동작을 수행할 수 있습니다.
제네릭 함수 작성하기
제네릭 함수는 꺾쇠 괄호(< >
) 안에 임의의 이름을 사용하여 다양한 타입의 매개변수를 받을 수 있습니다. 함수가 호출될 때 실제 타입이 결정되며, 컴파일러가 이를 분석하여 코드를 생성합니다.
다음은 제네릭 함수의 예시입니다.
func swap<T>(a: inout T, b: inout T) {
let temp = a
a = b
b = temp
}
var x = 5
var y = 10
swap(a: &x, b: &y)
print("x: \(x), y: \(y)") // 결과: x: 10, y: 5
위의 코드에서 T
는 임의의 타입을 나타내며, 함수가 호출될 때 실제 타입으로 치환됩니다.
제네릭 클래스와 구조체 작성하기
제네릭을 활용하여 클래스나 구조체를 작성할 수도 있습니다. 이를 통해 여러 타입에 대해 동작하는 유연한 타입을 생성할 수 있습니다.
다음은 제네릭 클래스의 예시입니다.
class Queue<T> {
var items = [T]()
func enqueue(item: T) {
items.append(item)
}
func dequeue() -> T? {
if !items.isEmpty {
return items.removeFirst()
}
return nil
}
}
let queue = Queue<Int>()
queue.enqueue(item: 5)
queue.enqueue(item: 10)
print(queue.dequeue()) // 결과: Optional(5)
print(queue.dequeue()) // 결과: Optional(10)
위의 코드는 Queue
클래스를 제네릭하게 작성하여 여러 타입의 데이터를 enqueue 및 dequeue할 수 있도록 합니다.
제네릭은 스위프트에서 강력한 도구로, 코드 재사용성과 유연성을 높일 수 있는데 큰 기여를 합니다.
더 자세한 내용은 스위프트 공식 문서를 참고하세요.