Notice
Recent Posts
Recent Comments
Link
大器晩成
[Extensions] 멤버의 확장 (계산 속성) 본문
익스텐션과 연산 프로퍼티
- 익스텐션을 이용하면 기존 객체에 프로퍼티를 추가할 수 있습니다. 단 추가할 수 있는 것은 연산프로퍼티로 제한되며, 저장 프로퍼티는 익스텐션을 통해 추가할 수 없습니다. 대신에 인스턴스 프로퍼티든 타입프로퍼티든 연산 프로퍼티라면 모두 추가할 수 있습니다.
인스턴스 계산 속성의 확장 (Apple 공식문서)
extension Double {
var km: Double { return self * 1_000.0}
var m: Double { return self }
var cm: Double { return self / 100.0}
var mm: Double { return self / 1_000.0}
var description: String {
return "\(self)km는 \(self.km)m, \(self)cm는 \(self.cm)m, \(self)mm는 \(self.mm)m"
}
}
//입력된 실수값의 기본 단위를 미터(m)로 변경
2.km
5.5.cm
123.mm
7.0.description
// 이런 식으로 자료형의 기능을 확장해놓으면 다음과 같이 각 단위별로 값을 더해야할 때 매우 편리하다.
let distance = 42.0.km + 195.m
print("마라톤의 총 거리는 \(distance)m입니다.")
// 연산 프로퍼티 정의하는 과정에 숫자에 언더바(_)가 추가된 부분이 있는 자릿수 구분을 위한 것이며, 사용하지 않은것과 차이가 없다
1_000 == 1000 // true
1_00_0 == 100_0 // true
1_0_0_0 == 1000 // true
10_00 == 100_0 // true
- 인스턴스자체에 즉, Double의 리터럴값에.(점) 문법을 사용하여 거리 변환을 수행하도록 만듦
- Double 값 1.0 ===> "1 미터"를 나타내는 것으로 간주됨
- ft 계산 속성은 Double 값을 3.28084로 나누어 피트에서 "미터로 변환"
- 1 킬로미터는 Double 값에 1_000.00을 곱하여 "미터로 변환"
- m 계산 속성이 self를 반환 (1.m 표현식은 Double값 1.0을 계산하는 것임)
타입 연산 속성의 확장
extension Int {
extension Double {
static var zero: Double {
return 0.0
}
}
Double.zero // 0.0
728x90
'iOS > Swift 문법' 카테고리의 다른 글
[Extensions] 생성자의 확장 (0) | 2024.12.26 |
---|---|
[Extensions] 멤버의 확장(메서드) (0) | 2024.12.23 |
[Extensions] 확장 (0) | 2024.12.23 |
Any, AnyObject (0) | 2024.12.19 |
타입과 다형성 (0) | 2024.12.19 |