일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 패스트캠퍼스
- reactnative강의
- 패캠강의후기
- fastcampus
- 패캠챌린지
- 수강료0원챌린지
- 패스트캠퍼스후기
- 직장인인강
- 파이썬
- 환급챌린지
- 코딩자격증
- 패캠인강후기
- 패캠
- 직장인자기계발
- 직정인자기계발
- 직장인공부
- 패캠reactnative
- 자바스크립트
- 30개프로젝트로배우는iOS앱개발withSwift초격차패키지Online.
- 자바
- 코딩교육
- 오공완
- 코딩테스트
- Today
- Total
라티의 작은 일기장
[5일차] 프로퍼티 본문
요즘은 학교에서 자바로 멀티쓰레드 프로그래밍을 통해 채팅서버를 구현하는 백엔드 개발 교육을 받고 있다.
3일에 걸쳐 진행되는 미니 코스(Mini Course)지만... 풀집중해서 알맹이를 쏙쏙 골라낸다면 나름 유익할 교육 같아서 수강 중이다.
아무튼.. 개강을 일주일도 남기지 않은 상황에서 ... 오늘도 어김없이 Swift 공부를 진행해볼까 한다.
오늘은 클래스, 구조체, 열거형 내 포함되는 내부 요소로서, 프로퍼티(Property)라는 이름을 갖고 있는 값에 대해 공부해보겠다.
프로퍼티(Property)?
클래스, 구조체, 열거형 내에 일정한 이름과 타입을 갖고 정의되는 멤버 변수, 또는 함수(메소드)이다.
이들 프로퍼티는 유형에 따라 저장 프로퍼티, 연산 프로퍼티, 타입 프로퍼티의 3개 분류로 나눌 수 있다.
각 프로퍼티의 의미는 다음과 같다.
- 저장 프로퍼티 : 인스턴스에 저장되는 변수 또는 상수
- 연산 프로퍼티 : 특정 연산을 수행한 결과값
- 타입 프로퍼티 : 특정 인스턴스가 아닌, 특정 타입에서 사용되는 프로퍼티
예시를 통해 각 프로퍼티에 대해 자세히 알아보자.
일단 저장 프로퍼티의 예시이다.
struct Dog {
var name: String
let gender: String
}
var dog = Dog(name: "rati", gender: "male")
print(dog)
Dog이라는 이름의 구조체에 변수 name과 상수 gender라는 저장 프로퍼티를 정의하였다.
그리고 dog라는 이름의 Dog 구조체 인스턴스를 선언함과 동시에 각 프로퍼티를 초기화해주는 코드이다.
실행 결과는 다음과 같다.
이렇게 인스턴스의 프로퍼티에 값의 저장이 가능한 프로퍼티를 저장 프로퍼티라고 하는 것이다.
변수 타입의 저장 프로퍼티는 값의 변경이 가능한 데 반해 상수 타입의 저장 프로퍼티는 값을 할당할 수 없다.
또한 인스턴스의 타입이 상수인 경우, 초기화 때 말고는 값을 변경할 수 없게 된다.
그러나 클래스의 경우, 상수 타입의 인스턴스라도 값을 변경할 수 있다.
다음과 같은 클래스를 정의하고, 상수 타입의 클래스 인스턴스의 저장 프로퍼티를 변경해보았다.
class Cat {
var name: String
let gender: String
init(name: String, gender: String) {
self.name = name
self.gender = gender
}
}
let cat = Cat(name: "sonia", gender: "female")
cat.name = "tim"
print(cat.name)
실행 결과는 다음과 같이 cat의 name이 sonia에서 tim으로 바뀐 것을 확인할 수 있다.
이제 연산 프로퍼티에 대해 알아보자.
연산 프로퍼티는 클래스, 구조체, 열거형에 사용 가능하며, 저장 프로퍼티와 달리 직접 값을 저장하지는 않지만 인스턴스에 값을 연산한 결과를 저장하는 역할을 수행한다. 보통은 getter()와 setter()를 활용한다.
다음과 같은 구조체를 정의하고 인스턴스를 생성하였다.
struct Stock {
var averagePrice: Int
var quantity: Int
var purchasePrice: Int {
get {
return averagePrice * quantity
}
set(newPrice) {
averagePrice = newPrice / quantity
}
}
}
인스턴스를 생성하고 연산 프로퍼티인 purchasePrice를 호출하면, 연산 프로퍼티에 정의된 getter()를 통해 값을 연산하고 그 결과를 출력해주는 것을 확인할 수 있었다.
마지막으로 타입 프로퍼티에 대해 알아보자.
타입 프로퍼티는 인스턴스 생성 과정 없이 객체 내 프로퍼티에 접근이 가능토록 하는 신기한 프로퍼티이다.
코드부터 살펴보자.
struct SomeStructure {
static var storedTypeProperty = "Some value"
static var computedTypeProperty: Int {
return 1
}
}
프로퍼티 타입 앞에 static 키워드를 붙여줌으로써 간단하게 사용할 수 있고, 저장 및 연산 프로퍼티에 대해 적용할 수 있다.
테스트 겸 두 종류의 프로퍼티를 모두 사용해보았다. 잘 작동하는 것을 확인할 수 있다.
패스트캠퍼스 바로가기 : http://bit.ly/3Y34pE0
> 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'Swift' 카테고리의 다른 글
[7일차] assert와 guard (0) | 2023.02.26 |
---|---|
[6일차] 상속 (0) | 2023.02.25 |
[4일차] 초기화 구문 init() (0) | 2023.02.23 |
[3일차] 구조체와 클래스 (0) | 2023.02.22 |
[2일차] 옵셔널과 옵셔널 바인딩 (0) | 2023.02.21 |