컴퓨터언어/Swift

[Swift] Computed Property : 생성자에 없어도 자동생성 해주는 변수

bbanpro 2020. 4. 12. 01:54
728x90
반응형

우리는 효과적인 코드 사용을 위해 Class나 Struct를 짜서 사용한다.

struct Tazza {
 let name: String
 let homeTown: String
 let todayCondition: Int
}

수많은 사례들을 공장처럼 편하게 찍어낼 수 있기 때문이다.

let goni = Tazza(name: "Kim Gon", homeTown: "namwon", todayCondition: 99)
let gwangryul = Tazza(name: "Go Gwang Ryul", homeTown: "Busan", todayCondition: 77)

즉 위와 같은 기본 방식은 인스턴스화 될 때 name과 homeTown, todayCondition 3가지 항목이 애초에 필요하며 그대로 저장됨을 명확히 나타낸다.

 

하지만 Computed Property를 사용하면, 위의 name이나 homeTown, todayCondition처럼 공개적인 변수 외에도 내부에서 비밀?리에 새로운 변수 girlFriend가 생성되게 할 수 있다.

즉 사용자로부터 받은 값을 가지고 비밀리에 이를 가공한 후 새로운 변수를 생성하고, 이를 다른 Controller에서도 접근하여 값을 사용하는 등의 응용을 할 수 있는 것이다.

 

사용하는 방법은 다음과 같다.

1. var 키워드를 사용할 것.

2. 데이터타입 뒤에 함수처럼 {}로 묶을 것.

3. {} 안에 조건문과 return을 써줌으로써, 그 반환값이 그대로 새로운 변수로 저장되도록 할 것.

struct Tazza {
 let name: String
 let homeTown: String
 let todayCondition: Int
 
 var girlFriend: String {
 
      switch todayCondition {
          case 0...50:
              return "Hwaran"
          case 51...100:
              return "Jung Madam"
          default:
              return "Park Mu Seok"
          }
          
 	}
    
}

 

이를 통해 우리는 공개적으로는 3개의 변수 name, homeTown, todayCondition을 다룬다고 말하면서,

내부적으로 todayCondition에 따른 girlFriend를 바꿔가는 객체를 생성할 수 있게 되었다.

 

정리

Computed Property는 시시각각 변하는 JSON 등의 OpenAPI형태나 사용자로부터 입력값을 받아야 하는 경우 등의 상황에서 더욱 유연하면서 간단한 대처를 할 수 있도록 돕는다.

728x90
반응형