์ ๋๋ ์ดํฐ ํจ์
์ ๋๋ ์ดํฐ ํจ์๋ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์์ฑํ๋ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์ ๋๋ ์ดํฐ ํจ์๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ์ ์์ฐํ๋ ์๋๋ ์ ๊ตํ๊ฒ ์กฐ์ ํ ์ ์๋ค.
//๋ค์ ํผ๋ณด๋์น ์ซ์๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด 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 }
์์ฝํ์๋ฉด ์ ๋๋ ์ดํฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ ๋ง ๋ฉ์ง ๊ธฐ๋ฅ์ด๋ฉฐ ํ์ ์คํฌ๋ฆฝํธ์์๋ ์ง์ํ๋ค๋ ์ฌ์ค์ด๋ค.
'TypeScript > ํ์ ์คํฌ๋ฆฝํธ TypeScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ์ ์คํฌ๋ฆฝํธ] ์ ๋๋ ์ดํฐ, ๋ฐ๋ณต์(iterator) ์ถ๋ก ๊ณผ ๋ช ์ (0) | 2022.04.20 |
---|---|
[ํ์ ์คํฌ๋ฆฝํธ] ์ปคํผ๋จธ์ ํด๋์ค๋ง๋ค๊ธฐ ์ค์ต (0) | 2022.04.19 |
[ํ์ ์คํฌ๋ฆฝํธ] this ๊ด๋ จ ์ค๋ฅ (0) | 2022.04.19 |
[ํ์ ์คํฌ๋ฆฝํธ] class์ getter์ setter (0) | 2022.04.18 |
[ํ์ ์คํฌ๋ฆฝํธ] ๊ฐ์ฒด์งํฅ์ ์ปคํผ๋จธ์ ๋ง๋ค๊ธฐ : encapsulation (0) | 2022.04.18 |