프로그래머스 문제 풀면서 하루정도 고민하게 된 문제가 있었다. (결국 풀지 못함)
단순한 방식이 아니라 내가 원하던 논리방식으로 풀고 싶었는데,
그거에 얽매이다가 문제를 못풀었던것같다.
다른 사람의 풀이 중에 내가 원하던 논리방식으로 푼 방식이 있었고,
그렇게 풀기위해서는 제너레이터랑 yield를 알아야 했다.
여러 개의 값을 필요에 따라 하나씩 반환(yield)할 수 있음
제너레이터를 만들려면 '제너레이터 함수'라고 불리는 특별한 문법구조가 필요함
yield <value>
문이 있음 (value는 생략 가능하지만 undefined됨)function* generateExample() {
yield 1;
yield 2;
return 3;
}
let generator = generateExample();
alert(generator); // [object Generator]
next()메서드는 value, done 프로퍼티를 가진 객체를 반환함
let one = generator.next(); // {value: 1, done: false}
yield <value>
문을 만날 때까지 실행이 지속할 수 있고, 더 이상 yield <value>
문이 없으면 멈춤=> 아래 코드를 해석해보면, yield 구문이 실행되고 i++까지 실행되고 중단! (아래 적용해보기 링크에 더 자세히...)
function* example () {
let i = 1;
while(true) {
yield Number(Number(i).toString(2) * 5);
i++;
}
}