Generic (제네릭)
Updated:
🔷 Generic (제네릭)
- 어떠한 자료형이든 받을 수 있다는 형태를 가리킵니다
struct Friend {
var name: String
}
struct Coder {
var name: String
}
// Generic 은 모든 type 을 담을 수 있다는 뜻 주로 T 라고 쓰임
struct MyArray<T> {
// 제네릭을 담은 빈 배열
var elements: [T] = [T]()
// 생성자 메소드 앞에 _ 언더바 넣음으로써 매개 변수 이름 생략
init(_ elements: [T]) {
self.elements = elements
}
}
var mySomeArray = MyArray([1, 2, 3])
print("mySomeArray: \(mySomeArray)")
var myStringArray = MyArray(["가", "나", "다"])
print("myStringArray: \(myStringArray)")
let friend_01 = Friend(name: "Jacob")
let friend_02 = Friend(name: "Emma")
let friend_03 = Friend(name: "John")
var myFriendArray = MyArray([friend_01, friend_02, friend_03])
print("myFriendArray: \(myFriendArray)")
🔶 stride 제네릭 함수
stride Generic function - https://developer.apple.com/documentation/swift/1641347-stride
stride generic 함수를 통해 범위 안에서 반복 처리가 가능합니다 from: 시작, to: 끝, by: 만큼
// stride 를 통해 범위안에 반복 처리가 가능합니다
// from 시작, to 끝, by 만큼
for countdown in stride(from: 4, to: 0, by: -1) {
print("\(countdown)...")
}
/*
4...
3...
2...
1...
*/
// 배열 익스텐션
extension Array {
// 배열을 쪼개는 메소드
func chunks(_ chunkSize: Int) -> [[Element]] {
// stride 를 통해 범위는 0에서 배열의 총 갯수
// 나누는 크기 만큼
return stride(from: 0, to: self.count, by: chunkSize).map {
// 나누는 크기 만큼의 배열 생성
Array(self[$0..<Swift.min($0 + chunkSize, self.count)])
}
}
}
let numbers = Array(1...10)
let result = numbers.chunks(3)
print(result) // [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
Reference
The Swift Language Guide: 제네릭(generic) - https://jusung.gitbook.io/the-swift-language-guide/language-guide/22-generics
개발하는 정대리 스위프트 기초 문법 - 9일차 / 제네릭 - https://www.youtube.com/watch?v=8nPQKGrpbmY&list=PLgOlaPUIbynoqbQw_erl3L2w7vfOTCtFD&index=9
Leave a comment