Class - Extensions
익스텐션을 이용해 기존 이미 정의된 클래스, 구조체, 열거형, 프로토콜 타입에 기능을 추가할 수 있다.
추가 가능한 기능
- Computed Property
- Method
- Initializer
- Subscript
- Protocol 따르도록
- 중첩 타입
Syntax
class SomeType {
}
//기본 문법
extension SomeType {
//추가기능
}
//Protocol with extension
extension SomeType: SomeProtocol {
}
Example
//연산 프로퍼티
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
#학습에 대한 내용으로 틀린 내용이 있을 수 있습니다.
#댓글로 남겨주시면 더 좋은 게시글로 수정하도록 하겠습니다.
Author And Source
이 문제에 관하여(Class - Extensions), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@elile-e/Class-Extensions저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)