[iOS 사전캠프] 연산 프로퍼티, 논리 연산자

DoyleHWorks·2024년 10월 15일
0

프로퍼티(Property)

저장 프로퍼티 (Stored Property)

  • let: 변경할 수 없는 상수(Constant) 선언시 사용
  • var: 변경할 수 있는 변수(Variable) 선언시 사용

연산 프로퍼티 (Computed Property)

  • 실제로 값을 저장하지 않음
  • 일반적으로 struct, class, enum 등 클래스나 구조체 내에서 많이 사용되지만,
    전역 변수나 지역 변수에도 적용할 수 있다.
  • getter와 setter(optional)를 통해 계산된 값을 제공하는 프로퍼티
    • Getter: 프로퍼티의 값을 읽을 때 실행되는 코드 블록
    • Setter: 프로퍼티에 값을 설정할 때 실행되는 코드 블록 (선택)
  • 값을 읽을 때와 쓸 때 각각 특정한 동작을 수행하도록 정의됨

기본 구조

struct Rectangle {
    var width: Double
    var height: Double
    
    // 연산 프로퍼티
    var area: Double {
        // getter
        get {
            return width * height
        }
        // setter (optional)
        set {
            // 가로와 세로의 비율을 유지하면서 면적에 맞게 크기를 조절
            height = sqrt(newValue)
            width = newValue / height
        }
    }
}

Getter만 있는 연산 프로퍼티

  • setter가 없는 연산 프로퍼티는 읽기 전용 연산 프로퍼티이다.
  • 이 경우 get을 생략할 수도 있다.
struct Circle {
    var radius: Double
    
    // 읽기 전용 연산 프로퍼티 (setter 생략)
    var diameter: Double {
        return radius * 2
    }
}

Getter와 Setter

  • Setter가 있는 경우 값을 설정할 수 있다.
  • Setter는 기본적으로 newValue라는 암시적 매개변수를 사용해 외부에서 전달된 값을 나타낸다.
struct Square {
    var sideLength: Double
    
    // getter와 setter가 있는 연산 프로퍼티
    var perimeter: Double {
        get {
            return sideLength * 4
        }
        set {
            sideLength = newValue / 4
        }
    }
}
  • newValue 대신 다른 이름을 지정할 수도 있다 - 'set(이름)'
var area: Double {
    set(newArea) {
        // newArea를 사용하여 로직 처리
    }
}

문제 풀이는 이 글에서 계속 - 논리 연산자에 대한 내용도 여기 있음

profile
Reciprocity lies in knowing enough

0개의 댓글