2015年11月4日水曜日

learnyounodeを解いてみる(2問目)

learnyounode [BABY STEP]

問題: 以上の整数をコマンドライン引数として受け取り、それらを足し合わせた値をコンソール(stdout)に出力するコマンドラインアプリを書いてください。


さて、この問題にはコマンドライン引数が必要ということなので、まずはNodeでコマンドライン引数を取る方法を調べます。 ヒントにはNodeでコマンドライン引数を取るにはprocessオブジェクトのargvプロパティを使用すると書いてあります。
  process.argv

processはグローバルオブジェクトなのでモジュールを呼ぶことなしに使えます。

process.argvから取れる引数は配列であり1つ目の引数は"node"で、2つ目の引数は"実行ファイルのパス"で3つ目から入力した引数となっています。

まずこのコードでどのように引数が取れるか試してみましょう。

argv.js

console.log(process.argv)

$ node argv.js 1 2 3
[ 'node',
  '.../node/test/argv.js',
  '1',
  '2',
  '3' ]



コマンドライン引数はスペースごとに一つの要素としてすべて文字列の配列で取られていることが分かります。
従って第三引数から取って、数値に変換することが理解できれば簡単です。

sum.js

var len = process.argv.length;
var sum = 0;
for(var i = 2; i < len; i++) {
    sum += Number(process.argv[i]);
}
console.log(sum);

$ learnyounode verify sum.js


✓ 回答内容は想定回答とマッチしました

# おめでとう!

「ベイビーステップ」に対するあなたの回答は合格です!

正式な回答が出てきますがヒント通りに書いたのでほぼ同じでしたね。

0 件のコメント:

コメントを投稿

Pythonで地図空間データを扱う⑤

ベースの地図が出来た所で、他のデータを被せてみます。 国土地理院の  500mメッシュ別将来推計人口データ  を使用します。 同じく神奈川県のデータ  500m_mesh_suikei_2018_shape_14.zip をダウンロードします。 ベースの地図データと同じ場所に展開...