클래스에 사칙연산 구연하기
class Calculator {
var result: Double = 0.0 // 초기값 설정.
// 더하기
func add(_ number1: Double, _ number2: Double) -> Double {
result = number1 + number2
return result
}
// 빼기
func substract(_ number1: Double, _ number2: Double) -> Double {
result = number1 - number2
return result
}
// 곱하기
func multiply(_ number1: Double, _ number2: Double) -> Double {
result = number1 * number2
return result
}
// 나누기
func divide(_ number1: Double, _ number2: Double) -> Double {
result = number1 / number2
return result
}
}
이건 구글링 해서 긁어온 코드인데 내가 모르는 부분은 지우고 아는 부분만 남겼다
근데 여기서 의문점 초기화 설정은 왜 하는 걸까?싶어서 초기화 코드 지워 봤다
그리고 result = number1 + number2 이렇게 변수?를 다시 설정하는게 괜히 코드를 한줄 더 작성하게 되는게 아닌가 싶어서 나는 삭제함
초기값 생성 안할시
class Calculator2 {
// 더하기
func add(_ number1: Double, _ number2: Double) -> Double {
return number1 + number2
}
// 빼기
func substract(_ number1: Double, _ number2: Double) -> Double {
return number1 - number2
}
// 곱하기
func multiply(_ number1: Double, _ number2: Double) -> Double {
return number1 * number2
}
// 나누기
func divide(_ number1: Double, _ number2: Double) -> Double {
return number1 / number2
}
}
이대로 값을 넣어보니 문제 없이 실행 된다 그렇다면 왜?? 초기화 설정이 필요한거지
let calculator2 = Calculator2()
Calculator2 뒤에 괄호를 여는 이유를 아직 모르는 나,,,
안 넣어 봤더니 아래 오류가 떴다
Expected member name or constructor call after type name
멤버 네임이나 생성자를 타입 이름 뒤에 불러와야한다고 한다
나머지 연산
func remind(_ number1: Double, _ number2: Double) -> Double {
return number1 % number2
}
내가 아는대로 식을 만들어 넣어서 계산해 봤는데
'%' is unavailable: For floating point numbers use truncatingRemainder instead
이런 오류가 뜬다
찾아보니 % 모듈러스 연산자는 정수형에서만 정의되기 때문 이란다
그럼 어떻게 해야하는데요
에러 문구에는 truncatingRemainder 를 대신 사용하라는데 그럼 얘는 또 뭐예요
func remind(_ number1: Double, _ number2: Double) -> Double {
// return number1 % number2
return number1.truncatingRemainder(dividingBy: number2)
}
이렇게 코드를 수정하니 문제 없이 나머지가 계산 됐다
근데 보통 나머지라는건 정수 잖아 굳이 더블로 반환 할 이유가 없지?
// 나누기
func divide(_ number1: Int, _ number2: Int) -> Double {
print(#function)
return Double(number1) / Double(number2)
// return number1 / number2 --> 기존 코드
}
// 나머지 연산
func remind(_ number1: Double, _ number2: Double) -> Int {
print(#function)
return Int(number1) % Int(number2)
// return number1 % number2 --> 내가 처음에 쓰고 싶던 코드
// return number1.truncatingRemainder(dividingBy: number2)--> 더블형 나머지 받는 코드
}
이거에 대해서는 튜터님께 달려가서 물어봤다
그렇게 바꾼 코드가 이건데 나누기 먼저 보자면
number1,2가 정수형 이고 Double로 반환 한다고 하면 Int를 Double로 반환 할 수 없다고 에러가 뜬다
return에서 number1,2를 Double로 묶어주면 형변형이 되어서 문제 없이 값이 나온다
나머지 연산 부분도 같은 원리 이다
% --> 요게 정수에서만 사용 가능하기 떄문에 Int 로 감싸서 계산 하면 된다
계산기에 꼭 정수만 넣진 않으니 나누기 부분은 원래 코드로 바꿔주었다
일단 여기까지 다음편엔 완성 할 수 있길 !! ㅠㅠ
'iOS Swift > Study' 카테고리의 다른 글
Swift 계산기 만들기 2탄 (1) | 2024.03.07 |
---|---|
프로그래머스 Swift 짝수의 합 (0) | 2024.03.07 |
프로그래머스 Swift 각도기 문제 (0) | 2024.03.06 |
프로그래머스 Swift 나이출력, 숫자 비교하기, 두 수의 합, 두 수의 나눗셈 (0) | 2024.03.05 |
테이블뷰에 이미지와 라벨 넣기 그리고 오류,,,nable to dequeue a cell with identifier peopleCell (0) | 2024.02.29 |
댓글