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원입니다

타입 저장 프로퍼티와 타입 연산 프로퍼티를 생성하고 사용해보았다.

타입 프로퍼티를 사용할 때에는 인스턴스를 생성하지 않고 구조체 이름으로 접근하여 사용한다.

 

 

 

 

 

출처

www.boostcourse.org/mo122/lecture/11298