2020. 4. 12. 01:54ㆍ컴퓨터언어/Swift
우리는 효과적인 코드 사용을 위해 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형태나 사용자로부터 입력값을 받아야 하는 경우 등의 상황에서 더욱 유연하면서 간단한 대처를 할 수 있도록 돕는다.
'컴퓨터언어 > Swift' 카테고리의 다른 글
[Swift] Extension : 원래 있던 class/struct에 커스텀 기능추가하기 (0) | 2020.04.13 |
---|---|
[Swift] 함수에 인수가 뭐이리 많아? _ 는 무엇? (feat. Parameter vs Argument) (0) | 2020.04.12 |
[Swift 고급] Protocol X Delegate : 코드 리팩토링과 파일 간 데이터 전송의 끝판왕 (0) | 2020.04.12 |
[Swift] Closure : 함수 안에 함수 (0) | 2020.04.11 |
[Swift] Protocol (0) | 2020.04.10 |