Swift - Stored properties (저장 프로퍼티)
Properties
프로퍼티는 값을 특정 class, struct, enum과 연결한다
Stored Properties (저장 프로퍼티)
computed properties (연산 프로퍼티)
type properties (타입 프로퍼티)
총 세개로 나뉜다.
Stored Properties (저장 프로퍼티)
저장 프로퍼티는 특정 class또는 struct 인스턴스의 일부로 저장되는 상수 또는 변수
변수를 저장하면 변수 저장 프로퍼티, 상수를 저장하면 상수 저장 프로퍼티 라고 부른다
이 프로퍼티를 선언할 때 기본 값을 설정할 수 있습니다
struct FixedLengthRange {
var firstValue: Int
let length: Int
}
var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)
// the range represents integer values 0, 1, and 2
rangeOfThreeItems.firstValue = 6
// the range now represents integer values 6, 7, and 8
위 코드에 있는 FixedLengthRange
구조체는 firstValue
변수, length
상수 프로퍼티를 가집니다
rangeOfThreeItems를 let으로 선언하면 프로퍼티의 값을 변경할 수 없습니다
struct와 mutating (ref. http://chris.eidhof.nl/post/structs-and-mutation-in-swift/)
struct는 value type으로 이것은 값 자체가 복사되는 타입이다
간단한 예시로 아래 코드를 볼 수 있다. b에다 a 값을 대입하고 b를 1 증가시킨 코드다
b는 a의 값(42)를 복사해서 받았기 때문에 b의 값이 변해도 a는 그대로다
var a = 42 // a = 42
var b = a // b = 42
b += 1 // b = 43, a = 42
위에서 선언한 struct의 인스턴스(rangeOfThreeItems
)에서 내부 변수의 값을 변경하면 setter로 동작해서 mutating(값 변경)을 하는데 let으로 선언하면 mutating을 허용하지 않아 에러가 발생한다.
그래서 구조체의 인스턴스를 let으로 선언했을 때 해당 struct의 프로퍼티까지 let 으로 선언한 효과를 가져옵니다
struct 이니셜라이저
struct는 기본 이니셜라이즈를 제공하기 때문에 FixedLengthRange 구조체 인스턴스를 선언하여 값을 초기화합니다.
* 만약 선언과 초기화를 한번에 진행했다면 FixedLengthRange()
로 인스턴스 생성이 가능합니다.
struct의 멤버 변수의 값을 선언과 동시에 초기화해주면 인스턴스를 만드는 과정이 쉬워집니다
struct FixedLengthRange {
var firstValue: Int = 3
let length: Int = 4
}
var rangeOfThreeItems = FixedLengthRange()
'Programming > Swift' 카테고리의 다른 글
[Swift] Lazy Stored Properties (0) | 2019.07.28 |
---|---|
[Swift] Enumeration (열거형) 살펴보기 (0) | 2019.07.10 |
[Swift] Swift Any, AnyObject 차이 알아보기 (0) | 2019.06.12 |
[Swift] Swift 언어의 특징 - 강한 타입 (0) | 2019.06.11 |
[Swift] - Swift Type 알아보기 (0) | 2019.06.11 |