1-1. 제네릭함수
func swapTwoInts( a: inout Int, b: inout Int) {
let tempA = a
a = b
b = tempA
}
func swapTwoValues( a: inout T, b: inout T) {
let tempA = a
a = b
b = tempA
}
// 임의의 타입 이름으로 로 작성해서 타입을 전달한다
var someInt = 1
var aotherInt = 2
swapTwoValues(&someInt, &aotherInt) // 함수 호출 시 T는 Int 타입으로 결정됨
var someString = "Hi"
var aotherString = "Bye"
swapTwoValues(&someString, &aotherString) // 함수 호출 시 T는 String 타입으로 결정됨
제네릭 : 제네릭함수, 구조체, 클래스, 열거형 타입에도 선언할 수 있어서 "제네릭 타입"이라고 한다