음 ,,, 사실대로 이야기 하자면 귀찮음 반이랑, 코드랑 싸우다가 멘탈 터져서 아는 사람이랑 힐링을 좀 하겠다고 전화해서 까먹은 거 반이겠네요 ,,,
사실대로 이야기 했습니다 ,,, 판사님 ,,,
전 죄가 없습니다 ,,,
네 ,,, 물론 했습니다 ,,, 근데 내일이 제출인데 아직도 하는 거 보면 배워야 할게 산을 넘어서 바다를 만드는 거 같은데 ,,, 감내해야죠 ,,,
사실 이번 과제에서 가장 힘든게 아니였나 싶어요 ,,,
스위프트를 비롯해서 나머지 언어들의 수식이 조건이 좀 있을텐데 스위프트는 그런것 중에 나머지 연산자가 사람 골 때리게 합니다 ,,,
처음에 이걸 보고 Int
로 두면 안되는데도 불구하고 Int
로 둔 다음 형변환으로 Double
로 바꿔서 두고, 처음 코드를 만들었는데 생각보다 큰 난관이 모든것을 Double
로 두고 코딩하는게 편한 코드임을 깨닳고 ,,, 나서 바로 도움을 요청했었습니다 ,,
class Calculator {
var firstNumber: Int = firstNum;
var secondNumber: Int = lastNum;
init (firstNumber: Int, secondNumber: Int) {
self.firstNumber = firstNumber
self.secondNumber = secondNumber
} // 각각 숫자 정의하기
func addFunction() -> Int {
let addResult: Int = firstNumber + secondNumber
return addResult
} // 덧셈 기능 만들기
func subtractFunction() -> Int {
let subtractResult: Int = firstNumber - secondNumber
return subtractResult
} // 뺄셈 기능 만들기
func multiplyFunction() -> Int {
let multiplyResult: Int = firstNumber * secondNumber
return multiplyResult
} // 곱셈 기능 만들기
func divideFunction() -> Int {
var divideResult: Int = firstNumber / secondNumber
var _: Double = Double(divideResult)
return divideResult
} // 나눗셈 기능 만들기
func reminderFunction() -> Int {
let reminderResult: Int = firstNumber % secondNumber // Int값으로 들어와야 하는데 Double로 선언되어서 오류 생김
return reminderResult
} // 나머지 연산 기능 만들기
}
이 코드에서 문제는 나눗셈 연산자가 자기 혼자 뻗어버려서 형변환으로 더블로 나오게 고쳐준거에요 -
이렇게 했던 제 코드는,
class Calculator {
var firstNumber: Double
var secondNumber: Double // 각 숫자 정의
init(firstNumber: Double, secondNumber: Double) {
self.firstNumber = firstNumber
self.secondNumber = secondNumber
} // 초기화
func add() -> Double {
return firstNumber + secondNumber
} // 덧셈 정의
func subtract() -> Double {
return firstNumber - secondNumber
} // 뺄셈 정의
func multiply() -> Double {
return firstNumber * secondNumber
} // 곱셈 정의
func divide() -> Double {
guard secondNumber != 0 else {
print("0으로는 계산할 수 없어요.")
return 0
} // 나누기로 나눌때 0이 되면 수학적으로 계산이 불가능하므로, 0이 되면 계산 불가능하게 하고 문자를 출력하게 함
return firstNumber / secondNumber
} // 나눗셈 정의
func remainder() -> Double {
guard secondNumber != 0 else {
print("0으로는 나눌 수 없어요.")
return 0
} // 나머지 계산도 마찬가지로 0이 되면 몫을 계산할 수 없으므로 같은 방식으로 정의함
return firstNumber.truncatingRemainder(dividingBy: secondNumber) // truncatingReminder(dividingBy: _)는 더블로 연산이 불가한 % 수식을 나눌 수 있게 도와주는 프로퍼티임
} // 나머지 계산 정의
로 정리 되었습니다 ,,,
물론 너무 많이 꼬였던 코드라 팀원분들도 어려워 하시면서 GPT를 좀 이용했지만, 정리도 하나하나 해가면서 좀 배워간거 같습니다 !!
코드를 잘 보시면, truncatingRemainder(dividingBy: secondNumber)
라는 부분이 보이고 뒤에 주석으로 // truncatingReminder(dividingBy: _)는 더블로 연산이 불가한 % 수식을 나눌 수 있게 도와주는 프로퍼티임
이라고 해뒀을텐데, 이게 뭔 소리냐면, %는 나머지 연산자라고 부르는데, 이게 우리가 계산하는 몫과 나머지 계산하는 그거에요 !
그러나 이 친구는 Double
타입으로 계산하게 하면 혼자서 물음표를 남발하고 혼자 죽어버리는 이상한 물론 제 시각에서만 그런거지만 어지간히 이상해요 ,,,
아이인 거였습니다 ,,,
결국엔 Int
로 나와서 계산식이 완성되어야 하는데, 그걸 truncatingRemainder(dividingBy: secondNumber)
이 친구가 도와주는 거라고 합니다 !
좀 겨우 찾아온 봄 같아요 ,,
하나하나 배워감에 감정이 왔다갔다가 하는 중이긴 하는데 좀 신기한 경험을 하는 중이지만 좀 이런 경험 한다는게 너무 신기한 느낌입니다 ,,,
좀 하나하나 배워가는데에 있어서 새로운 자세를 취하는 것도 나쁘지 않은 것 같습니다 ,,
이제 천천히 나아가보는 것도 신기할 거 같아요 ,,
난 이제 더 나아갈거니까 다른 사람도 나아가주세요,
그리고 이젠 절 무시하지 말아주세요.
글 잘 봤습니다, 감사합니다.