Swift - 구조체(Struct)

2023. 12. 4. 01:00·Study/Swift
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
반응형
저작자표시 비영리 변경금지 (새창열림)

'Study > 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
'Study/Swift' 카테고리의 다른 글
  • Swift - 열거형(Enum)
  • Swift - 클래스(Class)
  • Swift - 옵셔널(Optional)
  • Swift - 반복문 (for-in, while, repeat-while)
BonusTrack02.dev
BonusTrack02.dev
공부, 일상
  • BonusTrack02.dev
    BonusTrack02.dev
    BonusTrack02.dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (238) N
      • Dev experience (86) N
        • Android (85) N
        • Kotlin (1)
      • Study (62)
        • Kotlin (26)
        • Swift (17)
        • Java (19)
      • 프로그래머스 (68)
      • 주저리주저리 (22)
        • 카페 (5)
        • 음식점 (4)
        • 컨퍼런스 (1)
        • 팝업스토어 (4)
        • 전시회 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    aac
    Java
    coroutines
    자바
    PCCE
    android
    programmers
    ViewModel
    스위프트
    Observer
    ios
    CodeLab
    MVVM
    Material
    room
    코틀린
    daterangepicker
    viewModelScope
    코루틴
    안드로이드
    배열
    jetpack
    databinding
    오블완
    Kotlin
    티스토리챌린지
    SWIFT
    LiveData
    프로그래머스
    getNumericValue
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
BonusTrack02.dev
Swift - 구조체(Struct)
상단으로

티스토리툴바