일급 객체니 뭐니 다 알겠는데
아래같은 코드는 var 안쓰면 뭐 우짜라는 거임?
진짜 아무리 찾아봐도 모르겠네.
그냥 절차 지향으로 fun 위주로 써서 코딩 하라는걸로 밖에 이해가 안됨.
data class로 copy 해서 넘기라는데 맞나?... 맞으면 저기서 어떤 식으로 적용하라는 거지?
var flag = true
fun start(): Boolean {
if (flag) {
return false
}
...
flag = true
return true
}
fun stop(): Boolean {
if (!flag) {
return false
}
...
flag = false
return true
굳이 함수형이 아니라 immutable 관점에서 보면 함수 내부에서는 전역 변수를 참조 안하고 인자 값으로만 코딩하는 게 좋음
저런 식은 mutable 하게 의도한거라서 뭐 억지로 끼워맞춰서 이해할 필요는 없고, 억지로 끼워 맞춘다면 저 코드가 하나의 클래스라고 할때 flag의 상태가 바뀔때마다 인스턴스를 새로 만들어주는 것도 immutable 한거임
패러다임이니까 풀이 방법 자체가 다름
내 머리론 이해가 안가서 그 예제라도 찾고 싶은데 저런 경우엔 이상적인게 뭔데?
보통 이럴땐 State 쓰는데 start에서 flag 캡쳐링 대신 State로 래핑된 flag를 받고 flag값이 바뀐 새 State 만들어서 함수 결과랑 같이 리턴하고 stop 에서도 State 인자로 받으면됨 State 모나드 쓰는걸로 알아보면됨
이걸 그대로 풀어쓰면 코드가 개판나는데 모나딕 바인드나 do 노테이션 같은걸로 엮으면 리턴부분 빼고 예전이랑 똑같음