값을 가질수도 있는 Maybe 모나드로 구현
map 함수에 Int 를 String 으로 변환시키는 함수가 들어오면 Maybe<String> 객체로 변경시키고
flatMap 함수에 Int 를 Map<String> 으로 변환시키는 함수가 들어오면 Map<String> 을 반환시키는 함수가 구현 되어있음 ㅇㅅㅇ
이러면 일단 모나드는 정의된거고 여기다가 부가기능만 넣어주면 됨
예를들어 이런 널체크가 깊어지는 코드가 있다고 할 때
Maybe 에서 map 과 flatMap 에 동작 방식을 조금 바꿔주면 저런 코드가 사라질 수 있음
value 의 값이 null 이 아니라면 action 들을 취하고 아니라면 그냥 null을 담은 Maybe 를 반환시킴 ㅇㅅㅇ
이러면 이제 기존의 널체크 코드를
이런식으로 합성이 가능해지고
실제로 이 코드는 it.toIntOrNull 값이 널이기 때문에 아래에 "결과: $it" 부분은 실행되지 않음 ㅇㅅㅇ
지금은 널만 했지만 만약에 I/O 작업이라면 값을 받기전과 값을 받은 후로 State를 나눠서 처리를 하도록 하면
아직 받지 못한 값인데도 받은것처럼 사용할 수 있고
옵저버블처럼 스트림이 배출된 상태, 에러가 난 상태, 성공적으로 완수한 상태로 나누면 Rx 도 구현할 수 있는거지 ㅇㅅㅇ
해당 댓글은 삭제되었습니다.
코틀린은 언어 내장으로 널체크가 있으니 굳이 저럴필욘 없긴하지
처음 보네요
인터페이스와 유사한 개념이라는데 모나드랑 중요한 내용있어 ㅇㅅㅇ?
함수형은 상태가 있다는건지 없다는건지 있는데 없는척해야 된다는건지 참 어려운듯
어저라고