신속한 제네릭

Mar 09 2023
제네릭을 사용하면 다양한 유형에서 작동할 수 있는 유연하고 재사용 가능한 코드를 작성할 수 있습니다. 제네릭을 사용하면 하나의 특정 유형이 아닌 모든 유형에서 작동할 수 있는 함수, 클래스 및 구조를 정의할 수 있습니다.

제네릭을 사용하면 다양한 유형에서 작동할 수 있는 유연하고 재사용 가능한 코드를 작성할 수 있습니다. 제네릭을 사용하면 하나의 특정 유형이 아닌 모든 유형에서 작동할 수 있는 함수, 클래스 및 구조를 정의할 수 있습니다.

다음은 모든 유형의 배열을 취하고 해당 배열의 첫 번째 요소를 반환하는 일반 함수의 예입니다.

func firstElement<T>(of array: [T]) -> T? {
    array.first
}

그런 다음 모든 유형의 배열을 사용하여 이 함수를 호출할 수 있습니다.

let strings = ["apple", "banana", "orange"]
let firstString = firstElement(of: strings) // "apple"

let numbers = [1, 2, 3]
let firstNumber = firstElement(of: numbers) // 1

struct Stack<T> {
    private var elements = [T]()

    mutating func push(_ element: T) {
        elements.append(element)
    }

    mutating func pop() -> T? {
        elements.popLast()
    }
}

var stringStack = Stack<String>()
stringStack.push("apple")
stringStack.push("banana")
let poppedString = stringStack.pop() // "banana"

var numberStack = Stack<Int>()
numberStack.push(1)
numberStack.push(2)
let poppedNumber = numberStack.pop() // 2