// START!!
protocol AbstractOperation {
func operate(_ a: Int, _ b: Int) -> Int
}
class Calculator { // with는 파라미터 레이블, 함수를 호출할 때 사용!
func calculate(_ a: Int, _ b: Int, with operation: AbstractOperation) -> Int {
return operation.operate(a, b)
}
}
class AddOperation: AbstractOperation {
func operate(_ a: Int, _ b: Int) -> Int {
return a + b
}
}
class SubtractOperation: AbstractOperation {
func operate(_ a: Int, _ b: Int) -> Int {
return a - b
}
}
class MultiplyOperation: AbstractOperation {
func operate(_ a: Int, _ b: Int) -> Int {
return a * b
}
}
class DivideOperation: AbstractOperation {
func operate(_ a: Int, _ b: Int) -> Int {
return b != 0 ? a / b : 0
}
}
class ReminderOperation: AbstractOperation {
func operate(_ a: Int, _ b: Int) -> Int {
return b != 0 ? a % b : 0
}
}
let calc = Calculator() // Calculator라는 설계도를 통해 calc라는 실체를 만들어냄.(사용할 준비)
// 실체(객체, 인스턴스)가 힙(Heap)의 영역에 저장됨.
let addOp = AddOperation()
let subtractOp = SubtractOperation()
let multiplyOp = MultiplyOperation()
let divideOp = DivideOperation()
let reminderOp = ReminderOperation()
print(calc.calculate(10, 20, with: addOp)) // 파라미터 레이블 with를 통해 호출!
print(calc.calculate(10, 20, with: subtractOp))
print(calc.calculate(10, 20, with: multiplyOp))
print(calc.calculate(10, 20, with: divideOp))
print(calc.calculate(10, 20, with: reminderOp))
트러블 슈팅 TIL
문제 상황
- 발생일시 : 2025.03.11
- 발생환경 : Playground, Swift 5, macOS 사용
- 기능 : 나누기, 나머지 연산 구현
- 문제 내용 : 분모가 0 인 경우 오류 발생
원인 분석
- 분모 값 확인 : 분모에 0이 들어간 경우에만 오류 발생.
해결과정
- 분모에 0이 들어온 경우 실행하지 않도록 코드 수정, 코드 경량화
// 초기 코드
func divide(_ a: Int, _ b: Int) -> Int {
return a / b
func reminder(_ a: Int, _ b: Int) -> Int {
return a % b
// 1차 수정 코드
func divide(_ a: Int, _ b: Int) -> Int {
if b == 0 {
return 0
} else {
return a / b
}
}
func reminder(_ a: Int, _ b: Int) -> Int {
if b == 0 {
return 0
} else {
return a % b
}
}
// 2차 수정코드 (삼항연산자 사용)
func divide(_ a: Int, _ b: Int) -> Int {
return b != 0 ? a / b : 0
}
func reminder(_ a: Int, _ b: Int) -> Int {
return b != 0 ? a % b : 0
}
결과
- 분모에 0이 들어간 경우 0을 반환하여 오류를 해결함.
향후 개선 사항