開発環境
- OS X Lion - Apple(OS)
- Dart SDK (開発環境)
- Dart (プログラミング言語)
『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の6章(メソッドの詳細), 6.1(文字列の面白いメソッド)、6.2(練習問題)、目次をDartで解いてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
目次
コード
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(次の投稿を参照。)
- JavaScript, C - ビット演算子(シフト演算子)で掛け算、割り算を高速化できるかどうか?
- JavaScript - 文字列を数値(整数)に変換 - parseInt(s, radix)
- JavaScript - 等値演算子(==)、同値演算子(===)と推移律
で++、--は推奨されてないから、PythonだけではなくJavaScriptでも慣れてないから。Dartでは、どちらが主流、あるいは混在していくのかなぁ。
0 コメント:
コメントを投稿