- This topic has 2개 답변, 2명 참여, and was last updated 4 years, 7 months 전에 by 야곰.
-
글쓴이글
-
-
nobleidea참가자
- 글작성 : 5
- 답글작성 : 8
안녕하세요! 고귀한 생각을 가진 개발자입니다.
오늘은 Swift의 Properties 개념과
Stored Properties에 대해서 배워보고 공유하고자 합니당.[공식 가이드 문서]를 통해 개념을 숙지가 제일 중요합니다.
그럼 애플 가이드 문서부터 확인해보시죠
애플 공식 가이드 문서 – PropertiesProperties
Properties associate values with a particular class, structure, or enumeration.
Stored properties
store constant and variable values as part of an instance, whereascomputed properties
calculate (rather than store) a value.Computed properties
are provided by classes, structures, and enumerations.
Stored properties
are provided only by classes and structures.Stored and computed properties
are usually associated with instances of a particular type. However, properties can also be associated with thetype
itself. Such properties are known astype properties
.요약하자면,
프로퍼티는 특정 클래스(class), 구조체(struct), 열거형(enum)에 값을 연결합니다.종류
- Stored Properties (저장 프로퍼티)
- Computed Properties (연산 프로퍼티)
- Type Properties (타입 프로퍼티)
정의>
Stored Properties는 상수와 변수값을 인스턴스의 일부분으로써 저장합니다.
Computed Properties는 저장이라기 보다는 값을 연산합니다.
Type Properties는 타입자체와 연결하는 프로퍼티입니다.
연결타입
- Stored Properties는 클래스와 구조체에서만 연결합니다.
- Computed Properties는 클래스와 구조체 그리고 열거형과 연결합니다.
- Type Properties는 타입 그자체와 연결합니다.
애플 공식문서로 큰 흐름부터 파악해보았습니다.
아직은… 생소하고… 잘 와닿지 않습니다.
설명을 덧붙여 다같이 이해해보도록 합시다 !
먼저, Stored Properties에 예제를 통해 상세히 알아보도록 하겠습니다.struct FixedLengthRange { var firstValue: Int let length: Int } var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3) // 0,1,2 범위를 표현 rangeOfThreeItems.firstValue = 6 //6,7,8 범위를 표현
FixedLengthRange
는 변수저장프로퍼티와 상수저장프로퍼티를 가지는 변수타입의 struct 인스턴스 입니다.
그리고 인스턴스가 만들어졌을 때, 초기값을 통해 저장프로퍼티가 설정됩니다.struct FixedLengthRange { var firstValue: Int let length: Int } let rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3) // 0,1,2 범위를 표현 rangeOfThreeItems.firstValue = 6 // 여기서 에러가 난다, firstValue가 변수저장프로퍼티 일지라도!
위 예시와는 차이점이 딱 한가지입니다.
let 과 var의 차이 —> 비록 저장프로퍼티들이 변수일지라도 구조체의 타입이 상수이기때문에
구조체의 상수, 변수 저장프로퍼티는 절대 변경할 수 없습니다.
이 부분은 구조체에서 배우겠지만 구조체는 value type이기 때문입니다.예를 들어보자면… 자물쇠가 달린 상자에 병이 있습니다.
* 자물쇠 : let
* 상자 : struct
* 병의상태 : 변수저장프로퍼티 (병이 따져있는냐 안따져있느냐 상태값이라고 생각하시면 될 것 같습니다.)
* 병 : 상수저장프로퍼티 (변하지 않는 것)병을 어떻게든 따고 싶지만(상태값을 바꾸고 싶지만) 상자는 자물쇠(let)가 채워져있기때문에 아무리 딸 수 있는 상태여도(변경될 수 있는 속성이어도) 상태를 변경할 수 없는것이지요…
이해가 되시나요? 예시가 올바르다고 생각하진 않지만..ㅎㅎ
누군가에게 더욱 쉽게 설명드리기 위해, 공부한 것을 더 남기기 위해 작성해보았습니다..ㅎㅎ다음에는 다른 프로퍼터에 대해 더욱 알아보겠습니다.
감사합니다.
2020-03-31 오전 8:38 #5398 -
nobleidea참가자
- 글작성 : 5
- 답글작성 : 8
출처)
책, 스위프트 프로그래밍 – 저자 야곰
블로그,
https://zeddios.tistory.com/243 (Zedd님 블로그)2020-03-31 오전 8:45 #5403
-
-
글쓴이글
- 답변은 로그인 후 가능합니다.