-
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 Map, Filter, Reduce 심화 (0) 2019.06.03 JavaScript ES6 제너레이터와 이터레이터 (0) 2019.05.31 JavaScript ES6에서의 순회와 이터러블 프로토콜 (0) 2019.05.30