最近、プログラミングの学習について、主にJavaScriptを用いて行なっています。そのときの教科書が徹底マスターJavaScriptの教科書という本です。最新の動向にも配慮されていて、非常に頼りになる本だと思います。
目次
「教科書」のコードを修正
「これは!」と思うコードは写経をして自分で動作を確かめていますが、P.174において教科書の意図通りに動作しないと思われるコードがあることに気がつきました。
なので自分なりに考えて「こうじゃないか?」という感じで修正しました。教科書のコードと自分が修正したコードは、それぞれぞれGitHubにUPしておきました。自分が修正を入れた箇所は、28行目です。myConcat関数においてfor文が使われています。その直下に、
[php]if (i == 0) { continue }[/php]
という1行を追加しました。「ループの1番目の可変長引数リスト(argumentオブジェクト)を飛ばす」という意味です。
なぜ修正したのか?
教科書の意図は2番目以降の文字列を”/”で連結するということにあります。具体的に言うと、
dog/cat/tiger/bird
という結果を期待しています。ところが上述したcontinue文を入れないと、
//dog/cat/tiger/bird
というそれぞれ余計な”/”が入った結果が返ってきます。そこでif文とcontinue文を使って可変長引数リストの0番目の要素のときは、文字列を結合させないことにしました。
写経の重要性を実感
プラグラミング学習を始めたばかりの人が行う学習法の1つとして、「写経」が挙げられます。たとえ短くて実用的ではないコードでも、自分の手を動かしてプラグラミングをするといろいろなことが学習できることを改めて実感しました。