Swift - 프로퍼티(Properties)

2024. 11. 21. 23:39·Study/Swift
728x90
반응형

프로퍼티의 정의 및 사용

프로퍼티는 구조체, 클래스, 열거형 내부에 구현할 수 있다.

(열거형 내부에는 연산 프로퍼티만 구현 가능)

 

연산 프로퍼티는 var키워드로만 선언 가능하다.

 

연산 프로퍼티는 읽기 전용으로는 구현 가능하지만, 쓰기 전용으로는 불가능하다.

 

읽기, 쓰기 둘 다 가능하게 하려면 get, set 블럭을 구현하면 된다.

 

set 블럭에서 암시적 파라미터로 newValue를 사용할 수 있다.

 

종류

  • 저장 프로퍼티(Stored Properties)
  • 연산 프로퍼티(Computed Properties)
  • 타입 프로퍼티(Type Properties)

 

코드 예시

struct Student {
    
    // 인스턴스 저장 프로퍼티
    var name: String = ""
    var `class`: String = "Swift"
    var koreanAge: Int = 0
    
    // 인스턴스 연산 프로퍼티
    var westernAge: Int {
        get {
            return koreanAge - 1
        }
        
        set(inputValue) {
            koreanAge = inputValue + 1
        }
    }
    
    // 타입 저장 프로퍼티
    static var typeDescription: String = "학생"
    
    /*
    // 인스턴스 메서드
    func selfIntroduce() {
        print("저는 \(self.class)반 \(name)입니다")
    }
     */
    
    // 읽기전용 인스턴스 연산 프로퍼티
    // 간단히 위의 selfIntroduce() 메서드를 대체할 수 있습니다
    var selfIntroduction: String {
        get {
            return "저는 \(self.class)반 \(name)입니다"
        }
    }
        
    /*
     // 타입 메서드
     static func selfIntroduce() {
     print("학생타입입니다")
     }
     */
    
    // 읽기전용 타입 연산 프로퍼티
    // 읽기전용에서는 get을 생략할 수 있습니다
    static var selfIntroduction: String {
        return "학생타입입니다"
    }
}

// 타입 연산 프로퍼티 사용
print(Student.selfIntroduction)
// 학생타입입니다

// 인스턴스 생성
var tony: Student = Student()
tony.koreanAge = 10

// 인스턴스 저장 프로퍼티 사용
tony.name = "yagom"
print(tony.name)
// tony

// 인스턴스 연산 프로퍼티 사용
print(tony.selfIntroduction)
// 저는 Swift반 tony입니다

print("제 한국나이는 \(tony.koreanAge)살이고, 미쿡나이는 \(tony.westernAge)살입니다.")
// 제 한국나이는 10살이고, 미쿡나이는 9살입니다.

연산 프로퍼티는 개인적으로 Kotlin의 backing property와 유사한 느낌이다.

 

이와 관련해서는 추후 더 자세히 비교해보자.

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Study > Swift' 카테고리의 다른 글

Swift - 클로저(Closures) - 2  (0) 2024.11.15
Swift - 클로저(Closures) - 1  (2) 2024.11.14
Swift - Class, Struct, Enum 비교하기  (0) 2024.05.13
Swift - 열거형(Enum)  (0) 2024.05.12
Swift - 클래스(Class)  (0) 2023.12.05
'Study/Swift' 카테고리의 다른 글
  • Swift - 클로저(Closures) - 2
  • Swift - 클로저(Closures) - 1
  • Swift - Class, Struct, Enum 비교하기
  • Swift - 열거형(Enum)
BonusTrack02.dev
BonusTrack02.dev
공부, 일상
  • BonusTrack02.dev
    BonusTrack02.dev
    BonusTrack02.dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (237)
      • Dev experience (85)
        • Android (84)
        • Kotlin (1)
      • Study (62)
        • Kotlin (26)
        • Swift (17)
        • Java (19)
      • 프로그래머스 (68)
      • 주저리주저리 (22)
        • 카페 (5)
        • 음식점 (4)
        • 컨퍼런스 (1)
        • 팝업스토어 (4)
        • 전시회 (1)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
BonusTrack02.dev
Swift - 프로퍼티(Properties)
상단으로

티스토리툴바