[Properties]Computed Property
Computed Property(연산 프로퍼티)
- 특정 명령을 연산하고 값을 반환한다.
- class, struct, enum에서 사용
- Stored Property와 달리 저장공간을 갖지 않고 다른 Stored Property의 값을 연산하거나 Property로 전달받은 값을 다른 Stored Property에 저장한다 값이 계속 바뀌므로 var로 선언되어야 한다
기본 구조
var 이름: 타입 {
get { // getter
return // return 구문 항상 명시
}
set(변수) { // setter
}
}
사용예시
struct AppleStore {
var region = "USA"
var origin: String {
get {
return "made in \(region)"
// return "made in \(origin)" error!
}
set(region) {
self.region = "made in \(region)"
}
}
}
// get 사용
var a = AppleStore()
a.origin // USA
// set 사용
a.region = "Korea"
a.origin // Korea
설명
struct AppleStore {
let region = "USA"
// 읽기만 하기 때문에 값이 변경되지 않아 let으로 선언해도 된다.
var origin: String {
get {
return "made in \(region)"
}
}
}
// get 사용
let a = AppleStore()
a.origin // USA
- set 구문 생략가능 (get-only)
- 단, set기능을 사용할 수 없으며 값 수정 불가능
var origin: String {
return "made in \(region)"
}
- get만 사용할 경우 get 키워드 생략가능
- set only는 안됨
var origin: String
- 값을 저장하지 않기 때문에 Type Inference(타입추론)를 할 수 없어서 반드시 선언할 때 자료형을 명시!
- 선언할때 자료형을 set에서 똑같은 자료형이 따라가므로 set은 자료형을 따로 명시하지 않아도 된다.
var region = "USA"
- set에서 값이 변경될 수도 있으므로 var로 선언
return "made in \(origin)" //error!
- 연산프로퍼티는 저장할 공간이 없는데 저장된 값을 읽으려고 하기 때문에 에러발생
set(b) {
let b = "made in \(region)"
}
- set의 파라미터는 단 하나만 존재하고, 변수니까 아무 이름이나 지어도 된다.
set {
self.region = "made in \(newValue)"
}
- 변수명을 생략하고 newValue로 사용할 수도 있다 (대소문자,철자 엄수!)
Author And Source
이 문제에 관하여([Properties]Computed Property), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@whk1140/PropertiesComputed-Property
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var 이름: 타입 {
get { // getter
return // return 구문 항상 명시
}
set(변수) { // setter
}
}
struct AppleStore {
var region = "USA"
var origin: String {
get {
return "made in \(region)"
// return "made in \(origin)" error!
}
set(region) {
self.region = "made in \(region)"
}
}
}
// get 사용
var a = AppleStore()
a.origin // USA
// set 사용
a.region = "Korea"
a.origin // Korea
struct AppleStore {
let region = "USA"
// 읽기만 하기 때문에 값이 변경되지 않아 let으로 선언해도 된다.
var origin: String {
get {
return "made in \(region)"
}
}
}
// get 사용
let a = AppleStore()
a.origin // USA
var origin: String {
return "made in \(region)"
}
var origin: String
var region = "USA"
return "made in \(origin)" //error!
set(b) {
let b = "made in \(region)"
}
set {
self.region = "made in \(newValue)"
}
Author And Source
이 문제에 관하여([Properties]Computed Property), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@whk1140/PropertiesComputed-Property저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)