ライブ予定

2013/11/2(土)
Manhattan@阿佐ヶ谷
20:00 start
with 瀧沢望美(vocal) 渡邊晃(piano) 小松誠幸(bass) 松本英一郎(drams)

Jazz, R&Bやオリジナル曲をアレンジして演奏しています。

2013年1月10日木曜日

プロになるためのJavaScript入門 ~node.js、Backbone.js、HTML5、jQuery-Mobile (Software Design plus) 1



この本を使ってJavaScriptを再度勉強中。

誤記っぽいのを見つけたのでここに書いてみる。

2.3.12 Arrayクラス における リスト2.86 unshiftとshiftメソッド

これはキューの実現のためにあると解説され以下のようなサンプルコードが書かれている。
(少しはしょって書いてます)

var q=[];
q.unshift("a");
q.unshift("b");
q.shift();  // => "a"
q; // => ["b"]

このq.shift()のところは実際には"b"が返ってきます。ので最後の行も配列に残っているのは"a"です。
時間が無いので軽く調べたところunshift()はC++のSTLで言えばpush_front()的なもの、shift()はpop_front()的なもののようです。確かに3行目の時点で配列は["b","a"]となっています。

というわけでここは誤記なのではないかと思いました。
時間が無いのでここまでで投稿。

(2013/1/12追記)
著者の方がコメント欄に記入して下さいましたが、やはりキューを実現するにはpopまたはpushとの組み合わせでやるようです。
pushでやるならこんな感じでしょう。


var q=[];
q.push("a");  // q => ["a"]
q.push("b");  // q => ["a", "b"]
q.shift();  // => "a"
q; // => ["b"]


2 件のコメント:

kzri さんのコメント...

著者です。お手数をおかけして申し訳ございません。ご指摘の通りshiftとunshiftは先頭要素の操作で、キューを実現するにはpopと組み合わせなければいけません。ありがとうございます。正誤表の方で訂正しておきます。

tanujazz さんのコメント...

kzri さん
ご丁寧にコメントありがとうございました!