익스텐션을 이용해 기존 이미 정의된 클래스, 구조체, 열거형, 프로토콜 타입에 기능을 추가할 수 있다.
class SomeType {
}
//기본 문법
extension SomeType {
//추가기능
}
//Protocol with extension
extension SomeType: SomeProtocol {
}
//연산 프로퍼티
extension Double {
var km: Double { return self * 1_000.0 }
}
//메소드를 확장
extension Int {
func multiple(_ value: Int) {
return self * value
}
}
//Initializer 확장
extension Rect {
init(center: Point, size: Size) {
let originX = center.x - (size.width / 2)
let originY = center.y - (size.height / 2)
self.init(origin: Point(x: originX, y: originY), size: size)
}
}
//Subscript 확장
extension Int {
subscript(digitIndex: Int) -> Int {
var decimalBase = 1
for _ in 0..<digitIndex {
decimalBase *= 10
}
return (self / decimalBase) % 10
}
}
746381295[0]
// returns 5
#학습에 대한 내용으로 틀린 내용이 있을 수 있습니다.
#댓글로 남겨주시면 더 좋은 게시글로 수정하도록 하겠습니다.