iterator作った #82
今日やったこと
iteratorつくった
iteratorよくわからなかったので実際に書いてみました。急ぎでドカドカ書いただけなので汚い…。
// 配列作ってiteratorで全件console.log const products = ['iPhone', 'iPod', 'iPad', 'Mac', 'AppleWatch'] const productsIterator = products[Symbol.iterator]() let currentProduct = productsIterator.next() while (!currentProduct.done) { console.log(currentProduct.value) currentProduct = productsIterator.next() }
まずは普通に配列をiteratorで回してみた。
まぁJavaとかで触ったiteratorと同じ印象。というかどの言語で書いたってこうなるよな、と言う感じ。
次はiterableなクラスを書いてみた。
// なにかしら商品の在庫を配列で保持するみたいな想定のクラス class Stock { constructor () { this.stocks = [] } add (productName) { this.stocks.push(productName) } // iteratorの実装 [Symbol.iterator] () { let currentIndex = 0 return { next: () => { if (this.stocks.length <= currentIndex) { return { value: undefined, done: true } } else { return { value: this.stocks[currentIndex++], done: false } } } } } } const myStock = new Stock() myStock.add('AppleWatch') myStock.add('iMac') for (let item of myStock) { console.log(item) }
カンタンですね。やっぱり読んでいてよくわからない時は書くに限りますね。いい感じ。
ES6を書くのに必要だったのでES6 → ES5なテンプレ的なのを作った
腐るほどありそうですが…。
npm run build
でsrc配下のファイルをトランスパイルしてbuildに出力するだけです。
…これわざわざテンプレとか作る必要ない気がするw
雑談
埼玉の山奥にかき氷を食べに行ってました。
オール下道で秩父まで…。
新型フリードちゃん pic.twitter.com/H1Vm9RLYnj
— ううたろ (@uutarou10) 2017年8月3日
近くのカーシェアステーションに入った新型フリードに乗っていきました。
Honda SENSINGとかいうのがついてて、自動車専用道路とかでは車線認識して勝手にハンドルを切ってくれたり、メーターパネルには前方のカメラで認識した交通標識の情報が表示されたりしてすごかったです。
こういう最新装備たくさんのクルマ大好き。
なんかすごかったです。量多いけど…