제네릭(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
'Swift' 카테고리의 다른 글
Swift 강좌 8 - 에러 처리(Error Handling) (0) | 2022.10.22 |
---|---|
Swift 강좌 7 - 프로토콜(Protocols)과 익스텐션(Extensions) (0) | 2022.10.22 |
Swift 강좌 6 - 열거형(Enumerations)과 구조체(Structures) (0) | 2022.10.22 |
Swift 강좌 5 - 객체(Objects)와 클래스(Classes) (0) | 2022.10.22 |
Swift 강좌 4 - 함수 (0) | 2022.10.22 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!