강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

lexky820778 のプロフィール画像
lexky820778

投稿した質問数

関数型プログラミングとJavaScript ES6+

go

go에서 사용하는 reduce 함수가 어떻게 동작되는지 이해가 되지않습니다.

作成

·

376

1

const reduce = (facciter=> {
  // iter에 값이 없으면 두번째 인자인 acc를 iterable로 변환
  // acc는 iter의 첫번째 값인 0으로
  if (!iter) {
    iter = acc[Symbol.iterator]();
    acc = iter.next().value;
  }

  // iter에서 next를 한번 하였기 때문에 (a) => a + 1, 부터 들어감.
  for (const a of iter) {
    acc = f(acca); // acc = ?(0, a => a + 1) { ? }
  }

  return acc;
};

const go = (...args=> reduce((af=> f(a), args);

go(
  0,
  (a=> a + 1,
  (a=> a + 10,
  (a=> a + 100
);

 

reduce에서 f로 인자로 넘겨준 함수가 reduce 함수내에서 어떤식으로 동작하는지를 모르겠습니다.

이거가지고 2일동안 막히고 있네요 ㅠㅠ

함수형-프로그래밍javascript

回答 2

1

저도 동일한 문제로 고민하고 있었는데 도움이 되었습니다. 기존 array 내장 함수인 reduce 와 혼동이 되면서 헷갈렸네요! 감사합니다!

0

mduniv님의 프로필 이미지
mduniv
インストラクター

안녕하세요!

로그를 찍어보면서 다시 한 번 잘 봐보시면 어떨까요?

lexky820778님의 프로필 이미지
lexky820778
質問者

익명 함수여서 그런지 보이지가 않네요..

아래 부분만 어떤식으로 돌아가는지 알려주세요!

acc = f(acca);

mduniv님의 프로필 이미지
mduniv
インストラクター

저기서 f가 뭘까요?

lexky820778님의 프로필 이미지
lexky820778
質問者

(af=> f(a)
이 부분이 f로 들어가는 것 아닌가요?

lexky820778님의 프로필 이미지
lexky820778
質問者

아! f가 reduce(a, f) 함수이고 각각 a는 acc로  f는 a로 인자로 받는건가요?

map, filter, reduce에서 쓰던걸 망각했네요 ㅠㅠ

mduniv님의 프로필 이미지
mduniv
インストラクター

 네. 말씀주신게 맞습니다 :) 멋집니다!

lexky820778 のプロフィール画像
lexky820778

投稿した質問数

質問する