위의 과제 내용을 진행해보았다.
var balance: Int = 1000 {
didSet {
if balance < 0 {
print("🚨 경고: 잔액은 음수가 될 수 없습니다. 잔액을 0원으로 설정합니다.")
balance = 0
} else {
print("잔액이 \(balance)원으로 변경되었습니다.")
}
}
}
var balance: Int = 1000:
잔액을 저장하는 전역 변수 balance
를 정의한다. 초기값은 1000원.
didSet: balance
값이 변경될 때마다 실행되는 블록이다.
if balance < 0:
잔액이 음수가 되면 경고 메시지를 출력하고, 잔액을 0으로 설정한다. 이는 계좌의 잔액이 음수가 되는 것을 방지하기 위한 조건이다.
else:
잔액이 음수가 아닐 경우, 새로운 잔액을 출력한다.
didSet
은 Swift
에서 프로퍼티의 값이 변경된 후에 실행되는 특수한 속성 감시자
인데, 주로 프로퍼티의 값이 바뀔 때마다 추가적인 작업을 수행하고 싶을 때 사용된다.
그리고 didSet
내에서 조건문
을 사용할 수도 있는데, 잔액이 음수가 되지 않도록 보호하는 코드를 추가할 수 있는 if문
을 넣을 수 있다.
음, 쉽게 말하면 didSet
은 변수가 새로 값을 가질 때마다 어떤 행동을 자동으로 하게 해주는 기능인 것이다. 나의 주머니에 사탕이 있고 주머니속의 사탕 갯수가 바뀔 때마다 그 수를 친구에게 알려주는 것처럼, 프로그램에서도 자동으로 어떤 작업을 할 수 있게 해준다.
@MainActor func deposit(amount: Int) {
balance += amount
}
@MainActor func withdraw(amount: Int) {
balance -= amount
}
deposit(amount: Int):
주어진 금액을 잔액에 추가하는 함수. balance += amount
로 잔액을 증가시킨다.
withdraw(amount: Int):
주어진 금액을 잔액에서 빼는 함수. balance -= amount
로 잔액을 감소시킨다.
deposit(amount: 500)
withdraw(amount: 1000)
withdraw(amount: 600)
print("최종 잔액: \(balance)원")
deposit(amount: 500):
500원을 입금한다. 잔액은 1000 + 500 = 1500원이 된다. didSet 블록이 실행되어 "잔액이 1500원으로 변경되었습니다."라는 메시지가 출력된다.
withdraw(amount: 1000):
1000원을 출금한다. 잔액은 1500 - 1000 = 500원이 된다. didSet 블록이 실행되어 "잔액이 500원으로 변경되었습니다."라는 메시지가 출력된다.
withdraw(amount: 600):
600원을 출금하려고 시도한다. 잔액은 500 - 600 = -100원이 된다. 이 경우, didSet 블록의 조건에 의해 잔액이 0으로 설정되고, "🚨 경고: 잔액은 음수가 될 수 없습니다. 잔액을 0원으로 설정합니다."라는 경고 메시지가 출력된다.
print("최종 잔액: \(balance)원"):
마지막으로 현재 잔액을 출력한다. 최종 잔액은 0원이 된다.
입출금 과정에서 잔액이 어떻게 변하는지 출력하고, 잔액이 0 되는 경우에는 경고를 출력하여 안전하게 잔액을 관리하는 걸 공부했다.
잔액 관리에 중에 didSet을 통해 예외적인 상황을 처리하고, 잔액 변경 시에도 변경되는 내용이 프린트 된다. 이렇게 didSet과 if문의 용도성을 공부해봤는데, 혼자서 몇 번 하다보니 바로 바로 코드를 칠 수 있게 된 것 같아서 좋았다. 만족!