開発環境
- 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 コメント:
コメントを投稿