반응형

제네릭(Generics)를 다룹니다. 



A Swift Tour ( https://docs.swift.org/swift-book/GuidedTour/GuidedTour.html  ) 문서의 코드를 Swift Playground( https://swiftfiddle.com/  ) 에서 실행시켜 보며 진행해보았습니다. 

 

본 문서는 공부한 내용을 정리하는 목적으로 작성되었으며 A Swift Tour 문서의 내용을 바탕으로 하고 있습니다. 잘못된 점이 있을 수 있습니다

 

2021. 11. 06    최초작성

2022. 10. 22   최종수정



제네릭을 사용하면 타입별로 함수를 따로 만들어 줄 필요가 없습니다. 파라미터로 제공되는 타입을 사용하여 함수를 사용할 수 있게 됩니다. 

다음 예제 코드들은 똑같은 함수의 첫번째 파라미터와 리턴값을  문자열 또는 정수 타입으로 사용하고 있습니다. 

꺾쇠 괄호 < > 안에 적은 타입대로 함수가 동작하게 됩니다.

 

makeArray 함수를 정수 타입으로 사용하는 경우입니다.

func makeArray<Item>(repeating item: Item, numberOfTimes: Int) -> [Item] {
    var result: [Item] = []
    for _ in 0..<numberOfTimes {
        result.append(item)
    }
    return result
}


var ret = makeArray(repeating: 1, numberOfTimes: 4)

print(ret)

 



makeArray 함수를 문자열 타입으로 사용하는 경우입니다.

func makeArray<Item>(repeating item: Item, numberOfTimes: Int) -> [Item] {
    var result: [Item] = []
    for _ in 0..<numberOfTimes {
        result.append(item)
    }
    return result
}

var ret = makeArray(repeating: "knock", numberOfTimes: 4)

print(ret)

 

 

제네릭을 클래스, 열거형, 구조체, 함수 및 메서드에 사용할 수 있습니다.

 

다음 예제에서도 옵셔널 타입을 정수와 문자열로 각각 사용하고 있습니다. 

// Reimplement the Swift standard library's optional type
enum OptionalValue<Wrapped> {
    case none
    case some(Wrapped)
}


var possibleInteger: OptionalValue<Int> = .none
print(possibleInteger)

possibleInteger = .some(100)
print(possibleInteger)



var possibleString: OptionalValue<String> = .none
print(possibleString)

possibleString = .some("hello")
print(possibleString)

 





Swift 강좌 1 - Hello, world

https://webnautes.tistory.com/1549



Swift 강좌 2 - 상수와 변수

https://webnautes.tistory.com/1550



Swift 강좌 3 - 제어문 : if, for - in, switch, repeat - while

https://webnautes.tistory.com/1551



Swift 강좌 4 - 함수

https://webnautes.tistory.com/1552



Swift 강좌 5 - 객체(Objects)와 클래스(Classes)

https://webnautes.tistory.com/1558



Swift 강좌 6 - 열거형(Enumerations)과 구조체(Structures)

https://webnautes.tistory.com/1559



Swift 강좌 7 - 프로토콜(Protocols)과 익스텐션(Extensions)

https://webnautes.tistory.com/1562



Swift 강좌 8 - 에러 처리(Error Handling)

https://webnautes.tistory.com/1566



Swift 강좌 9 - 제네릭(Generics)

https://webnautes.tistory.com/1568



반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts