제네릭
예시
// 제네릭 사용 X 경우
// 두 변수의 값을 치환하는 함수, 인자를 타입별로 작성해야함
func swapTwoInts(_ a: inout Int, _ b: inout Int) {
let tempA = a
a = b
b = tempA
}
// 이걸 제네릭으로 사용할 경우, 타입에 상관없이 사용가능
func swapTwoValues<T>(_ a: inout T, _ b: inout T) {
let tempA = a
a = b
b = tempA
}
-------------------------------------------------------------
// where 키워드
// 프로토콜 채택 제약조건
func process<T>(value: T) where T: Numeric {
//numeric 프로토콜을 채택하는 타입만을 제네릭 타입 T 로 받음
print("Value is a numeric type.")
}
process(value: 5) // Value is a numeric type.