itisjustK
코딩과 사람 사는 이야기
itisjustK
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • 일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠.. (0)
    • Web (43)
      • html & css (9)
      • django & python (15)
      • java script (9)
    • iOS (51)
      • Swift (42)
      • SwiftUI (5)
    • CS (25)
      • 자료구조 (6)
      • 운영체제 (3)
      • 데이터베이스 (9)
      • 네트워크 (7)
    • PS (34)
      • 알고리즘 & 자료구조 (0)
    • Life (36)
    • Retrospective (15)
    • Book (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • crud
  • 세그멘테이션
  • POSTECH
  • SwiftUI
  • binding
  • CoreData
  • 킨디
  • 어플
  • AppleDevloperAcademy
  • SWIFT
  • 독립서점
  • 개발자
  • 생활코딩 #이고잉 #HTML #코딩 #개발자
  • 연결리스트
  • CS
  • 점주
  • 생활코딩
  • ios
  • nosql
  • mongodb

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
itisjustK

코딩과 사람 사는 이야기

iOS/Swift

[iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 19. 프로퍼티

2021. 7. 24. 19:50

프로퍼티

- 종류 : 인스턴스 저장 프로퍼티, 인스턴스 연산 프로퍼티, 타입 저장 프로퍼티, 타입 연산 프로퍼티, 지연 저장 프로퍼티

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

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

- 연산 프로퍼티는 var로만 선언 가능

- 연산 프로퍼티를 읽기 전용으로는 구현할 수 있으나, 쓰기 전용으로는 구현 불가능

- 읽기 전용으로 구현하려면 get 블럭만 작성해주면 됨. 읽기 전용은 get 블럭 생략 가능

- 읽기, 쓰기 모두 가능하게 하려면 get 블럭과 set 블럭을 모두 구현해주면 됨

- set 블럭에서 암시적 매개변수 newValue를 사용할 수 있음

 

 

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)입니다")
    }
    
    //읽기전용 인스턴스 연산 프로퍼티
    var selfIntroduction: String {
        get {
            return "마! 내는 \(self.class)반 \(name)이다!"
        }
    }
    
    //읽기전용 타입 연산 프로퍼티 -> 읽기 전용에서는 get 생략 가능
    static var selfIntroduction: String {
        return "학생 타입이다"
    }
}

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

//인스턴스 생성
var park:Student = Student()
park.koreanAge = 10 //열쨜

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

//인스턴스 연산 프로퍼티 사용
print(park.selfIntroduction)    //마! 내는 swift반 park이다!

print("마! 니 일로 와바! 내가 임마 한국 나이로 \(park.koreanAge)이고 미쿡으로 따지면 올해로 \(park.westernAge)야 임마! 으이!?")
//마! 니 일로 와바! 내가 임마 한국 나이로 10이고 미쿡으로 따지면 올해로 9야 임마! 으이!?

 

 

 

응용

struct Money{
    var currencyRate: Double=1100
    var dollar: Double=0
    var won: Double {
        get{
            return dollar*currencyRate
        }
        set {
            dollar = newValue / currencyRate
        }
    }
}

var moneyInMyPocket = Money()
moneyInMyPocket.won = 11000
print(moneyInMyPocket.won)  //11000

moneyInMyPocket.dollar = 10
print(moneyInMyPocket.won)  //11000

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

[iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 21. 상속 (클래스의 상속)  (2) 2021.07.24
[iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 20. 프로퍼티 감시자  (0) 2021.07.24
[iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 18. 클로저 고급  (0) 2021.07.23
[iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 17. 클로저 기본  (0) 2021.07.22
[iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 16. 클래스 vs 구조체 / 열거형  (0) 2021.07.21
    'iOS/Swift' 카테고리의 다른 글
    • [iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 21. 상속 (클래스의 상속)
    • [iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 20. 프로퍼티 감시자
    • [iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 18. 클로저 고급
    • [iOS 프로그래밍을 위한 스위프트 기초] Ch2. 다양한 표현 및 확장 - 17. 클로저 기본
    itisjustK
    itisjustK

    티스토리툴바