2013年10月2日水曜日

開発環境

『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の6章(メソッドの詳細), 6.1(文字列の面白いメソッド)、6.2(練習問題)、目次をDartで解いてみる。

その他参考書籍

目次

コード

sample.dart

void main() {
  var cols = 40;
  var cols_half = cols ~/ 2;
  var s = 'table of contents';
  print(new List.filled((cols - s.length) ~/ 2, ' ').join() + s);
  var contents = {'start':1,'number':11,'string':15};
  var i = 1;
  void f(k,v){
    var left = 'chapter $i: $k';
    var right = 'p.$v';
    print('$left${new List.filled(cols_half - left.length, ' ').join()}' +
        '${new List.filled(cols_half - right.length, ' ').join()}$right');
    i += 1;
  }
  contents.forEach(f);
}

入出力結果

           table of contents
chapter 1: start                     p.1
chapter 2: number                   p.11
chapter 3: string                   p.15

上記のコードでは関数を定義して、それをforEachの引数に渡したけど、無名関数で書けないのかなぁと試してみたら書けるみたい。(){}という形で。(もちろんchecked modeで実行できた。)

コード

sample.dart

void main() {
  var cols = 40;
  var cols_half = cols ~/ 2;
  var s = 'table of contents';
  print(new List.filled((cols - s.length) ~/ 2, ' ').join() + s);
  var contents = {'start':1,'number':11,'string':15};
  var i = 1;
  contents.forEach((k,v){
    var left = 'chapter $i: $k';
    var right = 'p.$v';
    print('$left${new List.filled(cols_half - left.length, ' ').join()}' +
        '${new List.filled(cols_half - right.length, ' ').join()}$right');
    i += 1;
  });
}

インクリメントをi++じゃなく、i += 1と書いてるのは、Pythonでは++演算子が無いから慣れているというのと、JavaScriptでは、JavaScript: The Good Parts(次の投稿を参照。)

で++、--は推奨されてないから、PythonだけではなくJavaScriptでも慣れてないから。Dartでは、どちらが主流、あるいは混在していくのかなぁ。

0 コメント:

コメントを投稿