Study/Ios
[swift] 프로퍼티
yujin2
2021. 1. 17. 23:34
프로퍼티
구조체, 클래스, 열거형에 구현하여 타입과 연관된 값들을 표현할 때 사용한다.
저장 프로퍼티, 연산 프로퍼티, 인스턴스 프로퍼티, 타입 프로퍼티 등이 있다.
연산 프로퍼티는 var로만 선언이 가능하고, 읽기 전용으로만 구현할 수 있다.
읽기 전용으로 구현하려면 get 블럭만 작성하면 된다.
읽기, 쓰기 전용으로 구현하려면 get, set 블럭 모두 구현해야 한다.
저장 프로퍼티, 연산 프로퍼티
// 저장 프로퍼티
var a: Int = 2
var b: Int = 3
// 연산 프로퍼티
var sum: Int {
return a + b
}
print(sum) // 5
저장 프로퍼티와 연산 프로퍼티를 만들어 사용한 예이다.
저장 프로퍼티와 연산 프로퍼티의 기능은 함수, 메서드, 클로저, 타입 등의 외부에 위치한 지역 / 전역 변수에서 모두 사용 가능하다.
인스턴스 프로퍼티
struct Introduce {
// 인스턴스 저장 프로퍼티
var name: String = ""
var koreanAge: Int = 0
// 인스턴스 연산 프로퍼티
var westernAge: Int {
get {
return koreanAge - 1
}
set(inputValue) {
koreanAge = inputValue + 1
}
}
// 읽기전용 인스턴스 연산 프로퍼티
var selfIntroduce: String {
return "이름은 \(self.name), 나이는 \(self.koreanAge)"
}
}
인스턴스 저장 프로퍼티와 인스턴스 연산 프로퍼티의 예이다.
westernAge는 읽기, 쓰기 전용으로 구현하기 위해 get, set 블럭을 모두 구현하였다.
selfIntroduce는 읽기 전용으로 구현하였고, 읽기 전용은 get 블럭을 생략할 수 있다.
// 인스턴스 생성
var seulgi: Introduce = Introduce()
// 인스턴스 저장 프로퍼티 사용
seulgi.koreanAge = 28
seulgi.name = "슬기"
print(seulgi.name) // 슬기
// 인스턴스 연산 프로퍼티 사용
print("미국나이는 \(seulgi.westernAge)입니다") // 미국나이는 27입니다
print(seulgi.selfIntroduce) // 이름은 슬기, 나이는 28
인스턴스를 생성한 후, 인스턴스 저장 프로퍼티와 인스턴스 연산 프로퍼티를 사용해보았다.
타입 프로퍼티
struct Apple {
// 타입 저장 프로퍼티
static var name: String = "사과"
static var price: Int = 2000
// 읽기 전용 타입 연산 프로퍼티
static var description: String {
return "\(self.name)는 \(self.price)원입니다"
}
}
// 타입 연산 프로퍼티 사용
print(Apple.description) // 사과는 2000원입니다
타입 저장 프로퍼티와 타입 연산 프로퍼티를 생성하고 사용해보았다.
타입 프로퍼티를 사용할 때에는 인스턴스를 생성하지 않고 구조체 이름으로 접근하여 사용한다.
출처