Extension은 클래스와 구조체 뿐만 아니라 라이브러리 또한 확장시켜 원하는 기능을 추가하여 사용할 수 있다.
아래 예제 코드는 Int에 printdescription을 추가하여 원하는 print문을 출력할 수 있는 기능을 추가한 것이다.
extension Int {
func printdescription() {
print("The number is \(self)")
}
}
let number = 25
number.printdescription() // "The number is 25"
아래 예제에서는 Employees에 printbadge를 추가하는 것이다.
struct Employees {
var name: String
var age: Int
}
extension Employees {
func printbadge() {
print("Name: \(name) Age: \(age)")
}
}
let employee = Employees(name: "John", age: 50)
employee.printbadge() // "Name: John Age: 50"
제너릭 구조체가 있다면 특정 타입의 값을 위한 조건적 Extension을 만들수도 있다. 조건문은 where을 통해서 결정된다.
아래처럼 Employees로 받는 T의 타입을 where문을 이용하여 타입의 종류에 따라서 실행을 다르게 할 수 있다.
struct Employees<T> {
var value: T
}
extension Employees where T == Int {
func doubleValue() {
print("\(value) times 2 = \(value * 2)")
}
}
let employee = Employees(value: 25)
employee.doubleValue() // "25 times 2 = 50"
'SwiftUI' 카테고리의 다른 글
animations (0) | 2023.11.06 |
---|---|
Gradient (0) | 2023.11.06 |
Swift Protocols (Equatable, Comparable, Hashable, Numeric, CaseIterable) (0) | 2023.11.05 |
Definition of Protocols (0) | 2023.11.05 |
Managing a Shared Resource Using a Singleton (0) | 2023.11.05 |