-
swift - Property #2 (Computed ProPerty, Read-Only Computed Property)swift 2021. 1. 12. 11:08
// Computed : 수학적인 의미보다는 다른 속성을 기반으로 속성이 결정된다는 뜻 // 즉, 속성에 접근할때 마다 값이 달라질 수 있다. -> 항상 var 키워드로 시작해야함 // type을 항상 명시해줘야 하고 기본값을 설정할 수 없다. class Person { var name: String var yearOfBirth: Int init(name: String, year: Int) { self.name = name self.yearOfBirth = year } var age: Int { get { let calendar = Calendar.current let now = Date() let year = calendar.component(.year, from: now) return year - yearOfBirth } set { let calendar = Calendar.current let now = Date() let year = calendar.component(.year, from: now) yearOfBirth = year - newValue // set키워드 다음 파라미터를 생략하면 age로 전달되는 값을 newValue라는 값으로 사용 가능 } } } let p = Person(name: "Jae ho", year: 2002) // get블록 p.age = 50 // set블록이 실행됨 p.yearOfBirth
// 읽기 전용 computed 속성은 set이 없는 것을 빼면 동일
// get 생략하고 {}로 대체가능하다.
// type 다음에 할당 연산자가 없으면 읽기 전용, 할당자가 있으면 클로저가 된다.
// 쓰기 전용 속성만 있는건 문법적으로 허락하지 않는다.
'swift' 카테고리의 다른 글
swift - Property #4(Type Property, Type Computed Property) (0) 2021.01.12 swift - Propery #3 (Property Observer) (0) 2021.01.12 swift - Property #1 (Stored Properties, Explicit Member Expression, Lazy Stored Properties) (0) 2021.01.12 swift - Identity Operators(항등 연산자) (0) 2021.01.08 swift - Value Types And Reference Types(값 형식과 참조 형식) (0) 2021.01.08