property 학습하기 (2) [ computed Property ]

2024. 8. 25. 18:38·Programing Langauge/swift
반응형

 

이번에는 연산 프로퍼티의 역할을 학습해보자

 

Computed Property (연산 프로퍼티)

저장 공간을 따로 갖고 있지않고 저장 프로퍼티의 값을 읽어 연산을 실행하거나

프로퍼티로 전달 받은 값을 다른 프로퍼티에 저장하는 역할을 한다.

 

특징

1) 항상 var로 선언되야한다.

 

2) getter 와 setter가 존재한다.

 

3) getter는 필수지만, setter는 필수가 아니다.

 

4) setter를 명시하지 않으면 get-only가 된다.

 

종류

  인스턴스 연산 프로퍼티 타입 연산 프로퍼티
사용 프로퍼티 종류 인스턴스 저장 프로퍼티 타입 저장 프로퍼티
lzay 동작 여부 X O

 

 

예시 코드

class Human {
    var name: String = "BOOST CAMP" // 인스턴스 저장 프로퍼티
    static var typeName: String = "Type" // 타입 저장 프로퍼티
    
    var getOnlyAlias: String {
        
        return name + "GetOnly"
    
    }
    
    // ❌ 에러발생
    var setOnlyAlias: String { // get은 옵션이 아닌 필수
        
        set {
            name = newValue
        }
    }
    
    var getSetAlias: String {
        
        get {
            return name + "GetSet"
        }
        
        set {
            name = newValue
        }
        
    }
    
    
    // ❌ 에러발생
    static var staticGetOnlyAlias: String { // 타입 연산 프로퍼티이므로  인스턴스 저장 프로퍼티로 사용 불가
        
        return name + "staticGetOnlyAlias"
        
    }
    
    static var staticGetOnlyAlias: String {
        
        return typeName +  "staticGetOnlyAlias"
    }
    
    static var staticGetSetAlias: String {
        
        get {
            return typeName +  "staticGetSet"
        }
        
        set {
            typeName = newValue  //typeName 변경됨
        }
        
    }

}

var human = Human()

Human.staticGetSetAlias = "TypeChange"

print(Human.typeName) // TypeChange

 

반응형

'Programing Langauge > swift' 카테고리의 다른 글

property 학습하기 (4) [ Property Observer ]  (0) 2024.08.25
property 학습하기 (3) [ Type Property ]  (0) 2024.08.25
property 학습하기 (1) [ Stored Property ]  (0) 2024.08.25
protocol 학습하기 (4) [ any, some ]  (1) 2024.08.25
protocol 학습하기 (3) [ associatedtype ]  (0) 2024.08.25
'Programing Langauge/swift' 카테고리의 다른 글
  • property 학습하기 (4) [ Property Observer ]
  • property 학습하기 (3) [ Type Property ]
  • property 학습하기 (1) [ Stored Property ]
  • protocol 학습하기 (4) [ any, some ]
Hamp
Hamp
남들에게 보여주기 부끄러운 잡다한 글을 적어 나가는 자칭 기술 블로그입니다.
  • Hamp
    Hamp의 분리수거함
    Hamp
  • 전체
    오늘
    어제
    • 분류 전체보기 (340)
      • CS (30)
        • 객체지향 (2)
        • Network (7)
        • OS (6)
        • 자료구조 (1)
        • LiveStreaming (3)
        • 이미지 (1)
        • 잡다한 질문 정리 (0)
        • Hardware (2)
        • 이론 (6)
        • 컴퓨터 그래픽스 (0)
      • Firebase (3)
      • Programing Langauge (41)
        • swift (34)
        • python (6)
        • Kotlin (1)
      • iOS (135)
        • UIKit (37)
        • Combine (1)
        • SwiftUI (34)
        • Framework (7)
        • Swift Concurrency (22)
        • Tuist (6)
        • Setting (11)
        • Modularization (2)
        • Instruments (6)
      • PS (59)
        • 프로그래머스 (24)
        • 백준 (13)
        • LeetCode (19)
        • 알고리즘 (3)
      • Git (18)
        • 명령어 (4)
        • 이론 (2)
        • hooks (1)
        • config (2)
        • action (7)
      • Shell Script (2)
      • Linux (6)
        • 명령어 (5)
      • Spring (21)
        • 어노테이션 (6)
        • 튜토리얼 (14)
      • CI-CD (4)
      • Android (0)
        • Jetpack Compose (0)
      • AI (21)
        • 이론 (10)
        • MCP (1)
        • LangGraph (10)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    dispatch
    Swift
    property
    AVFoundation
    Spring
    CS
    UIKit
    프로그래머스
    boostcamp
    protocol
    concurrency
    dp
    IOS
    SwiftUI
    백준
    lifecycle
    dfs
    Tuist
    GIT
    투포인터
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
Hamp
property 학습하기 (2) [ computed Property ]
상단으로

티스토리툴바