사이드 이펙트 분리
- 자판기에 금액(코인) 입금 시
- 자판기에 입금된 금액(inCash) 변경 시 자동으로 소지한 금액(outCash)이 변경
- 자판기에 입금된 금액(코인) 반환 시 ⇒ 사용 실패
- 자판기에 입금된 금액(inCash) 변경 시 자동으로 소지한 금액(outCash)이 변경
- 입금된 금액을 소지한 금액에 더 해야 하지만 입금된 금액이 0으로 바뀌고 Effect가 실행되 전에 있던 값을 더할 수 가 없음
- 원래 동작 :
outcash = outcash + incash
⇒ incash = 0
- Effect로 사용 시 :
incash = 0
⇒ outcash = outcash + incash
incash
의 변경으로 Effect가 실행되기 때문