계산기 로직을 구현하다가 나머지 연산을 수행하는 과정에서 오류가 발생했다.
// 첫 나머지 연산 코드
func divide(_ a: Double, _ b: Double) -> (result: Double, remainder: Double)? {
guard b != 0 else {
print("나누려는 수가 0 입니다.")
return nil
}
let result = a / b
let remainder = a % b
return (result, remainder)
}
Swift에서 Double 타입에는 % 연산이 안되고 따로 truncatingRemainder(dividingBy:)메서드를 사용해야 한다.
// truncatingRemainder(dividingBy:) 사용법
let a: Double = 10.0
let b: Double = 5.0
var result = a.truncatingRemainder(dividingBy: b)
// 각 연산 클래스
class AddOperation {
func calculate(_ a: Double, _ b: Double) -> Double {
return a + b
}
}
class SubtractOperation {
func calculate(_ a: Double, _ b: Double) -> Double {
return a - b
}
}
class MultiplyOperation {
func calculate(_ a: Double, _ b: Double) -> Double {
return a * b
}
}
class DivideOperation {
func calculate(_ a: Double, _ b: Double) -> (result: Double, remainder: Double)? {
guard b != 0 else {
print("나누려는 수가 0 입니다")
return nil
}
let result = a / b
let remainder = a.truncatingRemainder(dividingBy: b)
return (result, remainder)
}
}
// Calculator 클래스
class Calculator {
private let addOperation = AddOperation()
private let subtractOperation = SubtractOperation()
private let multiplyOperation = MultiplyOperation()
private let divideOperation = DivideOperation()
func add(_ a: Double, _ b: Double) -> Double {
return addOperation.calculate(a, b)
}
func subtract(_ a: Double, _ b: Double) -> Double {
return subtractOperation.calculate(a, b)
}
func multiply(_ a: Double, _ b: Double) -> Double {
return multiplyOperation.calculate(a, b)
}
func divide(_ a: Double, _ b: Double) -> (result: Double, remainder: Double)? {
return divideOperation.calculate(a, b)
}
}
//수행 부분
let calculator = Calculator()
print("10 + 5 = \(calculator.add(10, 5))")
print("10 - 5 = \(calculator.subtract(10, 5))")
print("10 * 5 = \(calculator.multiply(10, 5))")
if let resultDiv = calculator.divide(10, 0) {
print("10 / 3 = \(resultDiv.result), 나머지는 : \(resultDiv.remainder)")
} else {
print("나누기 Error.")
}