[TIL] 24.10.20 SUN

GDORI·2일 전
0

TIL

목록 보기
77/79
post-thumbnail

커링이란?

커링은 여러 개의 인자를 받는 함수를 하나의 인자를 받는 함수들의 연속된 체인으로 변환하는 기법으로 원래는 여러 인자를 한 번에 받는 함수를 여러 단계로 나눠서, 각각의 인자를 별도의 함수 호출로 전달하는 방식이다. 이 기법은 함수형 프로그래밍에서 자주 사용된다.

커링의 기본 개념

여기에 기본적으로 2개의 인자를 받아 계산해주는 add 함수가 있다.

function add(x, y) {
  return x + y;
}
console.log(add(2, 3)); // 5

이 함수를 커링을 적용하여 다음 형태로 변경할 수 잇다.

function cAdd(x){
  return function(y) {
    return x+y;
  };
};

const addOne = cAdd(1);
console.log(addOne(2)); // 3
console.log(cAdd(1)(2)); // 3

화살표 함수를 이용하여 작성하면 다음과 같다.

const cAdd = (x) => (y) => {
  return x+y;
}

const addOne = cAdd(1);
console.log(addOne(2)); // 3
console.log(cAdd(1)(2)); // 3

커링의 장점

  1. 코드의 재사용성 향상
    한 인자를 고정한 새로운 함수를 만들어 재사용할 수 있다.
  2. 부분 적용
    함수를 단계적으로 호출하여 필요한 인자만큼만 제공하고 나머지 필요 인자는 추후에 적용할 수 있다.
  3. 함수 조합
    커링된 함수는 여러개 작은 함수를 조합하여 복잡한 동작을 쉽게 구성할 수 있게 해준다.

커링의 한계와 주의점

  1. 불필요한 복잡성
    단순히 호출만을 위한 함수라면 더 복잡하게 만들 수 있다.
  2. 성능저하
    너무 깊은 커링체인은 성능에 영향을 미칠 수 있다.
  3. 이해하기 까다로움
    함수형 프로그래밍에 익숙치 않다면 처음에 이해하기 까다로움 ( 본인이 그런 상황 😁 )

protobuf 란?

구글에서 만든 직렬화 포맷으로 데이터를 빠르고 효율적으로 직렬화, 역직렬화 하기 위해 사용되며 JSON, XML과 같은 형식보다 저 작고 빠르다. 다양한 프로그래밍 언어에서 지원된다.

protobuf 주요 함수

  • protobuf.load: .proto 파일을 로드
  • lookupType: 메시지 타입을 조회
  • verify: 객체가 해당 스키마에 맞는지 검사
  • create: 유효한 메시지 객체를 생성
  • encode: 객체를 바이너리 데이터로 직렬화
  • decode: 바이너리 데이터를 객체로 역직렬화
profile
하루 최소 1시간이라도 공부하자..

0개의 댓글