[swift] 제네릭을 사용하여 코드 중복을 줄이는 방법은?
제네릭은 Swift에서 재사용 가능한 코드를 작성하는데 매우 유용한 도구입니다. 제네릭을 사용하면 함수, 메서드, 클래스, 구조체, 프로토콜 등을 작성할 때 특정 데이터 타입을 독립적으로 처리할 수 있습니다. 이를 통해 같은 동작을 하는 코드를 중복 작성하지 않아도 되므로 코드의 유연성과 재사용성을 향상시킬 수 있습니다.
제네릭 함수 작성
예를 들어, 제네릭을 사용하여 배열에서 최솟값과 최댓값을 반환하는 함수를 작성해보겠습니다.
func findMin<T: Comparable>(in array: [T]) -> T {
var min = array[0]
for element in array {
if element < min {
min = element
}
}
return min
}
func findMax<T: Comparable>(in array: [T]) -> T {
var max = array[0]
for element in array {
if element > max {
max = element
}
}
return max
}
let numbers = [5, 3, 9, 2, 8]
print("최솟값:", findMin(in: numbers)) // 최솟값: 2
print("최댓값:", findMax(in: numbers)) // 최댓값: 9
위의 예제에서 findMin
과 findMax
함수는 제네릭으로 작성되었기 때문에 다양한 데이터 타입을 처리할 수 있습니다.
제네릭 타입 작성
또한, 제네릭을 사용하여 스택(Stack) 자료구조를 구현할 수도 있습니다.
struct Stack<Element> {
private var elements = [Element]()
mutating func push(_ element: Element) {
elements.append(element)
}
mutating func pop() -> Element? {
return elements.popLast()
}
func peek() -> Element? {
return elements.last
}
var isEmpty: Bool {
return elements.isEmpty
}
}
var intStack = Stack<Int>()
intStack.push(3)
intStack.push(5)
print(intStack.pop()) // Optional(5)
위의 Stack
구조체는 제네릭으로 작성되어 다양한 데이터 타입을 담을 수 있습니다.
마무리
제네릭을 사용하여 코드 중복을 줄이고 유연하고 재사용 가능한 코드를 작성할 수 있습니다. 제네릭을 활용하여 프로그램을 작성하면 코드의 가독성과 유지보수성을 향상시킬 수 있으며, Swift에서 강력한 도구로 활용할 수 있습니다.
더 자세한 내용은 Swift 공식 문서를 참고하시기 바랍니다.