var newAmount = 0.0
var oldAmount = 0.0
// 계좌 잔액을 저장하는 변수
var balance: Double = 0.0 {
willSet(newValue){
newAmount = newValue
}
didSet(oldValue){
oldAmount = oldValue
}
}
// 입금 함수
func deposit(amount: Double) {
if amount > 0 {
balance += amount
print("입금 금액: \(amount)")
print("잔액이 \(oldAmount)원에서 \(newAmount)원으로 변경되었습니다.")
} else {
print("0 이하의 값을 입금할 수 없습니다.")
}
}
// 출금 함수
func withdraw(amount: Double) {
if amount > 0 {
if balance >= amount {
balance -= amount
print("출금 금액: \(amount)")
print("잔액이 \(oldAmount)원에서 \(newAmount)원으로 변경되었습니다.")
} else {
print("잔액이 부족합니다 (현재 잔액: \(balance))")
}
} else {
print("0 이하의 값을 출금할 수 없습니다.")
}
}
// 명령어
func executeCommand(_ command: String){
let components = command.split(separator: " ").map { String($0) }
guard let action = components.first else {
print("잘못된 명령어입니다.")
return
}
switch action {
case "deposit":
if components.count == 2 {
if let amount = Double(components[1]) {
deposit(amount: amount)
} else {
print("입력한 금액이 유효하지 않습니다.")
}
} else {
print("잘못된 명령어입니다. 예: deposit <금액>")
}
case "withdraw":
if components.count == 2 {
if let amount = Double(components[1]) {
withdraw(amount: amount)
} else {
print("입력한 금액이 유효하지 않습니다.")
}
} else {
print("잘못된 명령어입니다. 예: withdraw <금액>")
}
default:
print("알 수 없는 명령어입니다.")
}
}
// 메인 루프: 사용자 입력을 계속 받아들임
while true {
print("deposit 또는 withdraw 명령어로 입출금할 수 있습니다: ", terminator: "")
if let command = readLine() {
executeCommand(command)
}
}
과제 주제 내용으로 제시된 프로퍼티 옵저버와 접근 제한자 중에 접근 제한자는 활용 못했는데, 참고하려고 정답예시코드를 확인해봤더니 두 가지 모두 사용되지 않았다.. 🤔