스위프트 익스텐션 swift extension
import Swift
/*
- 익스텐션
익스텐션은 구조체, 클래스, 열거형, 프로토콜 타입에
새로운 기능을 추가할 수 있는 기능입니다.
기능을 추가하려는 타입의 구현된 소스 코드를 알지 못하거나 볼수 없다해도,
타입만 알고 있다면 그 타입의 기능을 확장할 수 도 있습니다.
익스텐션으로 추가할 수 있는 기능
연산 타입 프로퍼티 / 연산 인스턴스 프로퍼티
타입 메서드 / 인스턴스 메서드
이니셜라이저
서브스크립트
중첩 타입
특정 프로토콜을 준수할 수 있도록 기능 추가
기존에 존재하는 기능을 재정의할 수는 없습니다.
extension 확장할 타입 이름 {
타입에 추가될 새로운 기능 구현
}
익스텐션은 기존에 존재하는 타입이 추가적으로 다른 프로토콜을 채택할 수 있도록
확장할 수도 있습니다.
extenstion 확장할 타입 이름: 프로토콜1, 프로토콜2, 프로토콜3 ... {
프로토콜 요구사항 구현
}
*/
// 연산 프로퍼티 추가
extension Int {
var isEven: Bool {
return self % 2 == 0
}
var isOdd: Bool {
return self % 2 == 1
}
}
print(1.isEven) // false
print(2.isEven) // true
print(1.isOdd) // true
print(2.isOdd) // false
var number: Int = 3
print(number.isEven) // false
print(number.isOdd) // true
number = 2
print(number.isEven) // true
print(number.isOdd) // false
extension Int {
func multiply(by n: Int) -> Int {
return self * n
}
}
print(3.multiply(by: 2)) // 6
print(4.multiply(by: 5)) // 20
number = 3
print(number.multiply(by: 2)) // 6
print(number.multiply(by: 3)) // 9
extension String {
init(intTypeNumber: Int) {
self = "\(intTypeNumber)"
}
init(doubleTypeNumber: Double){
self = "\(doubleTypeNumber)"
}
}
let stringFromInt: String = String(intTypeNumber: 100) // 100
let stringFromDouble: String = String(doubleTypeNumber: 100.0) // 100.0
'Swift > 기초&문법' 카테고리의 다른 글
스위프트 반려동물 소개앱 swift CompanionAnimals (0) | 2018.10.06 |
---|---|
swift ColorPicker 스위프트 컬러피커 (0) | 2018.10.02 |
스위프트 프로토콜 swift protocol (0) | 2018.09.30 |
UpDown game swift 업다운 게임 스위프트 (0) | 2018.09.29 |
swift assert guard 스위프트 (0) | 2018.09.28 |