프로퍼티
- 종류 : 인스턴스 저장 프로퍼티, 인스턴스 연산 프로퍼티, 타입 저장 프로퍼티, 타입 연산 프로퍼티, 지연 저장 프로퍼티
- 프로퍼티는 구조체, 클래스, 열거형 내부에 구현할 수 있음
- 열거형 내부에는 연산 프로퍼티만 구현 가능
- 연산 프로퍼티는 var로만 선언 가능
- 연산 프로퍼티를 읽기 전용으로는 구현할 수 있으나, 쓰기 전용으로는 구현 불가능
- 읽기 전용으로 구현하려면 get 블럭만 작성해주면 됨. 읽기 전용은 get 블럭 생략 가능
- 읽기, 쓰기 모두 가능하게 하려면 get 블럭과 set 블럭을 모두 구현해주면 됨
- set 블럭에서 암시적 매개변수 newValue를 사용할 수 있음
struct Student {
//인스턴스 저장 프로퍼티
var name: String=""
var `class`: String="swift"
var koreanAge: Int=0
//인스턴스 연산 프로퍼티
var westernAge: Int {
get {
return koreanAge-1
}
set(inputValue) {
koreanAge = inputValue+1
}
}
//타입 저장 프로퍼티
static var typeDescription: String="학생"
//인스턴스 메소드
func selfIntroduce() {
print("저는 \(self.class)반 \(name)입니다")
}
//읽기전용 인스턴스 연산 프로퍼티
var selfIntroduction: String {
get {
return "마! 내는 \(self.class)반 \(name)이다!"
}
}
//읽기전용 타입 연산 프로퍼티 -> 읽기 전용에서는 get 생략 가능
static var selfIntroduction: String {
return "학생 타입이다"
}
}
//타입 연산 프로퍼티 사용
print(Student.selfIntroduction) //학생 타입이다
//인스턴스 생성
var park:Student = Student()
park.koreanAge = 10 //열쨜
//인스턴스 저장 프로퍼티 사용
park.name="park"
print(park.name) //park
//인스턴스 연산 프로퍼티 사용
print(park.selfIntroduction) //마! 내는 swift반 park이다!
print("마! 니 일로 와바! 내가 임마 한국 나이로 \(park.koreanAge)이고 미쿡으로 따지면 올해로 \(park.westernAge)야 임마! 으이!?")
//마! 니 일로 와바! 내가 임마 한국 나이로 10이고 미쿡으로 따지면 올해로 9야 임마! 으이!?
응용
struct Money{
var currencyRate: Double=1100
var dollar: Double=0
var won: Double {
get{
return dollar*currencyRate
}
set {
dollar = newValue / currencyRate
}
}
}
var moneyInMyPocket = Money()
moneyInMyPocket.won = 11000
print(moneyInMyPocket.won) //11000
moneyInMyPocket.dollar = 10
print(moneyInMyPocket.won) //11000'iOS > Swift' 카테고리의 다른 글
| [iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 21. 상속 (클래스의 상속) (2) | 2021.07.24 |
|---|---|
| [iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 20. 프로퍼티 감시자 (0) | 2021.07.24 |
| [iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 18. 클로저 고급 (0) | 2021.07.23 |
| [iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 17. 클로저 기본 (0) | 2021.07.22 |
| [iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 16. 클래스 vs 구조체 / 열거형 (0) | 2021.07.21 |