numTwo 값이 있는 경우에 연산자를 클릭하면 numOne + numTwo의 계산 결과를 numOne 변수에 저장하고 numTwo 변수를 비워 놓으면 연이어 계산할 수 있지 않을까요? 예를 들어, 1 + 2 + 4를 계산한다면 먼저 1 + 2를 계산해 3이 되고, 그다음 3 + 4를 계산하게 됩니다. 두 번째 +를 눌렀을 때 operator에는 +를 저장하고, 기존 numOne과 numTwo의 결과인 3은 numOne에 저장한 후 numTwo는 비워 두는 것이죠. 그다음 4를 누르면 비워 둔 numTwo에 저장합니다. 이제 =를 누르면 3과 4가 더해집니다. 이 과정을 표로 정리하면 다음과 같습니다.
버튼 순서 |
1 |
+ |
2 |
+ |
4 |
= |
numOne |
1 |
1 |
1 |
3 |
3 |
7 |
operator |
+ |
+ |
+ |
+ |
||
numTwo |
2 |
4 |
||||
$result |
1 |
|
2 |
3 |
4 |
7 |
순서도에 따라 코드를 바꿔 보겠습니다. 계산 결과를 구하는 함수(#calculate의 이벤트 리스너)를 calculate 변수로 분리합니다. calculate 함수가 계산한 후(switch 문 부분) numOne 변수에 계산 값을 저장하고 operator와 numTwo 변수를 비워 놓게 수정합니다. 그러면 두 번째 연산자 버튼을 클릭할 때(onClickOperator), calculate 함수를 재사용할 수 있습니다.