728x90
반응형
1. 구조체란 무엇일까?
구조체는 값(value) 타입이다.
스위프트에서 대부분 타입은 구조체라고 한다.
타입이름은 파스칼 케이스를 사용한다.
2. 구조체 관련 문법
구조체를 선언할 때는 C언어처럼 struct 키워드를 사용한다.
struct Test {
// 가변 프로퍼티
var mutableProperty: Int = 100
// 불변 프로퍼티
let immutableProperty: Int = 100
// 타입 프로퍼티
static var typeProperty: Int = 100
// 인스턴스 메서드
func instanceMethod() {
print("instance method")
}
// 타입 메서드
static func typeMethod() {
print("type method")
}
}
상당히 코틀린에서의 클래스와 비슷한데 let을 val로 static을 companion object 안으로 밀어넣으면 매우 비슷할 것이다.
여기서 타입 메서드나 타입 프로퍼티는 자바와 비슷하게 static으로 선언되어 있어 비슷한 방식으로 접근할 수 있다.
// 가변 인스턴스 생성
var mutable: Test = Test()
mutable.mutableProperty = 200
// 컴파일 오류
//mutable.immutableProperty = 200
// 불변 인스턴스
let immutable: Sample = Sample()
// 컴파일 오류
//immutable.mutableProperty = 200
//immutable.immutableProperty = 200
// 타입 프로퍼티 및 메서드
Test.typeProperty = 300
Test.typeMethod() // type method
// 컴파일 오류
//mutable.typeProperty = 400
//mutable.typeMethod()
var 키워드를 통해 가변 인스턴스를 생성하면 가변 프로퍼티를 수정할 수 있지만,
let 키워드를 통해 불변 인스턴스를 생성하면 가변 프로퍼티라도 수정할 수 없다.
여기서 자바, 코틀린과의 차이점은 static으로 선언된 타입 프로퍼티와 메서드를 인스턴스에서 접근할 수 없다는 점이다.
코틀린의 companion object 안의 변수나 메서드, 자바의 static 키워드가 붙은 변수나 메서드는 인스턴스에서도 접근할 수 있었다.
728x90
반응형
'Language > Swift' 카테고리의 다른 글
Swift - 열거형(Enum) (0) | 2024.05.12 |
---|---|
Swift - 클래스(Class) (0) | 2023.12.05 |
Swift - 옵셔널(Optional) (0) | 2022.09.22 |
Swift - 반복문 (for-in, while, repeat-while) (0) | 2022.09.21 |
Swift - 조건문(if-else, switch) (2) | 2022.09.20 |