순수 함수와 커링 기법

noname2048·2021년 4월 9일
0

순수함수의 사용

리액트는 컴포넌트나 루틴을 순수 함수로서 작성하기를 요구한다.
1. 상태값/속성값(부모로 부터 주입받는)이 같으면 항상 같은 값을 반환해야한다.
2. 다른 side effects를 발생시키지 않는다.

컴포넌트의 상태값은 불변객체 (Immutable Object)로 관리한다.
1. 수정할 때에는 기존값을 변경하는 것이 아니라, 가은 이름의 새로운 객체를 생성한다.

// 순수함수의 예제로 짜여진 jsx
const Header = (props) => (
  <div>
  	<h1>{props.title}</h1>
  </div>
)

순수 함수를 활용한 데이터 변환
reduce, filter, map, join

// javascript
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const number = numbers.reduce((acc, n) => acc + n, 0);
const even_numbers = numbers.filter(i => i % 2 == 0);
# python
from functools import reduce
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
number = reduce(lambda acc, n: acc + n, numbers, 0)
even_numbers = filter(lambda i: i % 2 == 0, numbers)

커링 (Currying)

일부의 인자를 고정한 새로운 함수를 반환하는 함수를 만드는 기법

function userLogs(username) {
  function wrap(message) {
    console.log(`${username} - ${messages}`);
  }
  return wrap
}

const log = userLogs("USER 001");
log("Hello World");
const userLogs = username => message => {
  console.log(`${username} - ${messages}`);
};
# python 의 경우
def userLogs(username):
    def wrap(message):
        print(f"{username} - {message}")
    return wrap
profile
설명을 쉽게 잘하는 개발자를 꿈꾸는 웹 개발 주니어

0개의 댓글