[νμ μ€ν¬λ¦½νΈ] μ λλ μ΄ν° μ§μ, λͺ μ
μ λλ μ΄ν° ν¨μ
μ λλ μ΄ν° ν¨μλ μ¬λ¬ κ°μ κ°μ μμ±νλ νΈλ¦¬ν κΈ°λ₯μ μ 곡νλ€. μ λλ μ΄ν° ν¨μλ₯Ό μ΄μ©νλ©΄ κ°μ μμ°νλ μλλ μ κ΅νκ² μ‘°μ ν μ μλ€.
//λ€μ νΌλ³΄λμΉ μ«μλ₯Ό κ³μ°νκΈ° μν΄ aμ bλ₯Ό, bμ a+bλ₯Ό νλ²μ λ€μ ν λΉνλ€.
function* createFibonacciGenerator() {
let a = 0;
let b = 1;
while (true) {
yield a;
[a, b] = [b, a + b];
}
}
let fiboancciGenerator = createFibonacciGenerator();
//IterableIterator<number>
console.log(fiboancciGenerator.next()); //{ value: 0, done: false }
console.log(fiboancciGenerator.next()); //{ value: 1, done: false }
console.log(fiboancciGenerator.next()); //{ value: 1, done: false }
console.log(fiboancciGenerator.next()); //{ value: 2, done: false }
console.log(fiboancciGenerator.next()); //{ value: 3, done: false }
console.log(fiboancciGenerator.next()); //{ value: 5, done: false }
console.log(fiboancciGenerator.next()); //{ value: 8, done: false }
console.log(fiboancciGenerator.next()); //{ value: 13, done: false }
μ μ½λμ createFibonacciGenerator ν¨μλ IterableIteratorμ λ°ννκ³ , μ΄ μ λλ μ΄ν°μ nextλ₯Ό νΈμΆν λλ§λ€ λ€μ νΌλ³΄λμΉ κ°μ κ³μ°ν΄μ κ²°κ³Όλ₯Ό λ°©μΆνλ€. νμ μ€ν¬λ¦½νΈμμ λ°©μΆλ κ°μ μ΄μ©ν΄ λ°λ³΅μμ νμ μ μΆλ‘ νλ€.
λ€μ μμ²λΌ IterableIterator μμ λ°©μΆνλ νμ μ κ°μΈμ μ λλ μ΄ν° λ°ν νμ μ λͺ μνλ λ°©λ²λ μλ€.
function* createNumbers(): IterableIterator<number> {
let n = 1;
while (true) {
yield n++;
}
}
let numbers = createNumbers();
console.log(numbers.next()); //{ value: 1, done: false }
console.log(numbers.next()); //{ value: 2, done: false }
console.log(numbers.next()); //{ value: 3, done: false }
μμ½νμλ©΄ μ λλ μ΄ν°λ μλ°μ€ν¬λ¦½νΈμ μ λ§ λ©μ§ κΈ°λ₯μ΄λ©° νμ μ€ν¬λ¦½νΈμμλ μ§μνλ€λ μ¬μ€μ΄λ€.