計算機科学のブログ

関数 ジェネレータ関数 無限リスト、nextメソッド

入門JavaScriptプログラミング (JD Isaacks(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT3(関数)、LESSON 18(ジェネレータ関数)、18.5(練習問題)、Q18-1の解答を求めてみる。

コード

function* days(date = new Date()) {
    while (true) {
        yield date;
        date = new Date(date.getTime());
        date.setDate(date.getDate() + 1);
    }
}

let genDate = days();
for (let index = 0; index < 5; index++) {
    console.log(genDate.next());
}

入出力結果(Console)

% node sample1.js
{ value: 2021-06-15T7:16:10.135Z, done: false }
{ value: 2021-06-16T7:16:10.135Z, done: false }
{ value: 2021-06-17T7:16:10.135Z, done: false }
{ value: 2021-06-18T7:16:10.135Z, done: false }
{ value: 2021-06-19T7:16:10.135Z, done: false }
%