-
JavaScript 코드를 값으로 다루어 표현력 높이기프로그래밍/JavaScript 2019. 6. 3. 17:27반응형
Go
<script> const go = (...args) => reduce((a, f) => f(a), args); const pipe = (f, ...fs) => (...as) => go(f(...as), ...fs); go( add(0, 1), a => a + 10, a => a + 100, log); // 111 const f = pipe( (a, b) => a + b, a => a + 10, a => a + 100); log(f(0, 1)); </script>
Pipe
함수를 반환하는 함수
GO를 사용하여 가독성 좋은 코드 개발
<script> log( reduce( add, map(p => p.price, filter(p => p.price < 20000, products)))); go( products, products => filter(p => p.price < 20000, products), products => map(p => p.price, products), prices => reduce(add, prices), log); go( products, filter(p => p.price < 20000), map(p => p.price), reduce(add), log); </script>
Go 와 Curry를 활용하여 가독성 좋은 코드 개발
<script> const mult = curry((a, b) => a * b); log(mult(3)(2)); const mult3 = mult(3); log(mult3(10)); log(mult3(5)); log(mult3(3)); </script>
함수 조합으로 함수 만들기
<script> const total_price = pipe( map(p => p.price), reduce(add)); const base_total_price = predi => pipe( filter(predi), total_price); go( products, base_total_price(p => p.price < 20000), log); go( products, base_total_price(p => p.price >= 20000), log); </script>
수강 후기
앞 강좌의 go 함수까지는 괜찮았지만 curry라는 개념이 너무나 어려웠다. 여러번 돌려봤는데도 불구하고 명확하게 이해가 되질 않아 따로 JavaScript Curry에 대해서 검색을 해보았더니 초심자에게 아주 잘 설명해둔 블로그 가 있었다. 아직까지도 잘 사용하면 코드 활용성을 매우 높일수 있을것같다 라는 느낌적인 부분만 받고 있는데 이를 다음 강좌인 장바구니 예제에서 어느정도 해결할수 있을것이라 기대하고있다. 사실 go와 pipe들도 어려웠는데 구글링을 통해서 어느정도 해결하였다. curry의 경우에도 이 수업에서 배운 코드들과 구글링을 통해 얻은 지식을 조합하니 아주 조금 이해가 된다. 틈틈히 앞에서 배웠던 부분도 구글링 해보아야겠다는 생각이 들었다.
반응형'프로그래밍 > JavaScript' 카테고리의 다른 글
JavaScript 객체 Key 값을 받아 value값 반환하기 (0) 2019.07.02 Reactjs 가상화폐 시세 테이블 웹 앱 개발기 (0) 2019.06.27 JavaScript 코드를 값으로 다루어 표현력 높이기 (0) 2019.06.03 JavaScript Map, Filter, Reduce 심화 (0) 2019.06.03 JavaScript ES6 제너레이터와 이터레이터 (0) 2019.05.31 JavaScript ES6에서의 순회와 이터러블 프로토콜 (0) 2019.05.30