250x250
반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

스윞한 개발자

Swift 기초 문법 - getter / setter 본문

Swift 이론

Swift 기초 문법 - getter / setter

스윞남 2024. 1. 25. 19:03
728x90
반응형
SMALL

이번 포스팅에서는 getter 접근자,  setter 설정자에 대해 정리해보았습니다!

 

접근자/설정자란?

 

 

Swift에서는 프로퍼티의 값을 읽거나 설정하기 위해 **Getter(접근자)**와 **Setter(설정자)**를 사용합니다. 이들은 프로퍼티의 값을 가져오거나 설정하는데 사용되는 메서드이며, 일반적으로 계산 프로퍼티나 프로퍼티 감시자에서 자주 활용됩니다!!

 

스위프트에서의 getter와 setter는 프로퍼티 값을 가져오거나 설정하는 데 사용되는 메커니즘입니다. 프로퍼티에 대한 접근을 더 유연하게 제어하고, 값이 설정되거나 가져올 때 추가 작업을 수행할 수 있는 기회를 제공합니다.

1. Getter(접근자)

Getter는 프로퍼티의 값을 반환하는 역할을 합니다. Getter를 정의하지 않으면 자동으로 기본 getter가 생성됩니다.

class Person {
    var age: Int = 25 // 프로퍼티
    var isAdult: Bool {
        return age >= 18 // 계산된 프로퍼티의 getter
    }
}
let person = Person()
print(person.isAdult) // true

 

또한 이렇게 반환되다 보니 프로퍼티의 값을 가져오는 메서드이기도 합니다. 위에서 말한대로 기본적으로 모든 프로퍼티에는 자동으로 생성되는 기본 Getter가 있습니다. 그러나 필요에 따라 커스텀 Getter를 정의할 수 있습니다.

 

class Circle {
    var radius: Double
    
    // 기본 Getter
    // 커스텀 Getter
    var diameter: Double {
        get {
            return radius * 2
        }
    }
    
    init(radius: Double) {
        self.radius = radius
    }
}

let myCircle = Circle(radius: 5.0)
print(myCircle.diameter)  // 10.0

 

2. Setter(설정자)

Setter는 프로퍼티의 값을 설정하는 역할을 합니다. Setter를 정의하지 않으면 읽기 전용 프로퍼티가 됩니다. Setter는 프로퍼티의 값을 변경할 때 호출되며, 필요에 따라 커스텀 Setter를 정의할 수 있습니다.


Setter를 정의할 때 newValue라는 특별한 이름의 매개변수를 사용하여 새 값을 받아올 수 있습니다.

class Temperature {
    var celsius: Double = 0.0

    var fahrenheit: Double {
        get {
            return celsius * 9 / 5 + 32
        }
        set {
            celsius = (newValue - 32) * 5 / 9
        }
    }}

var temperature = Temperature()
temperature.fahrenheit = 68 // 이 값 설정은 setter 호출
print(temperature.celsius) // 20.0

 

class Circle {
    var radius: Double
    
    // 기본 Setter
    // 커스텀 Setter
    var diameter: Double {
        get {
            return radius * 2
        }
        set(newDiameter) {
            radius = newDiameter / 2
        }
    }
    
    init(radius: Double) {
        self.radius = radius
    }
}

var myCircle = Circle(radius: 5.0)
print(myCircle.diameter)  // 10.0

// Setter를 통해 프로퍼티 값 변경
myCircle.diameter = 20.0
print(myCircle.radius)    // 10.0

 

위의 예시에서 diameter 프로퍼티는 Getter를 통해 값을 가져오고, Setter를 통해 값을 설정합니다. Setter에서는 매개변수 newDiameter를 사용하여 설정하려는 값에 접근할 수 있습니다.

 

 

참고(출처) : 개발하는 정대리, 야곰(Swift5)

728x90
반응형
LIST