開発環境
- OS X Mavericks - Apple (OS)
- Dart Editor (開発環境)
- Dartium | Dart/ Structured web apps (ブラウザ, Dart VM 用 (Chromium with the Dart VM))
- Safari (ブラウザ, JavaScript 用)
- Dart (プログラミング言語)
Real World Haskell―実戦で学ぶ関数型言語プログラミング(Bryan O'Sullivan (著)、 John Goerzen (著)、 Don Stewart (著)、山下 伸夫 (翻訳)、伊東 勝利 (翻訳)、株式会社タイムインターメディア (翻訳)、オライリージャパン)の4章(関数プログラミング)、4.5(リストを使う)、練習問題 4.をDartで考えてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
練習問題 4.
コード
sample.dart
import 'dart:html';
void main(){
print(' '.split(''));
var textarea = new TextAreaElement();
FileReader reader = new FileReader();
run.onClick.listen((MouseEvent event){
try{
File file = input.files.first;
reader.readAsText(file);
reader.onLoadEnd.listen((var event){
String temp = reader.result;
try{
var result = convert(temp);
var rows = result.split('\n').length;
textarea.rows = rows;
textarea.style.width = '650px';
textarea.text = result;
div.innerHtml = '';
div.append(textarea);
}catch(e){
div.text += '$e\n';
}
});
} catch (e){
div.text += '$e\n';
}
});
textarea.onClick.listen((MouseEvent event) => textarea.select());
}
InputElement input = querySelector('#f0');
ButtonElement run = querySelector('#run_dart');
DivElement div = querySelector('#d0');
String convert(String s){
var lines = s.split('\n');
var cols = 0;
for(String line in lines){
var m = line.length;
if(m > cols){
cols = m;
}
}
var result = [];
var temp = lines.first.split('');
var rows = temp.length;
for(var ch in temp){
result.add(ch);
}
var i;
for(i = 0; i < cols - rows; i += 1){
result.add(' ');
}
result.add('\n');
for(String line in lines.sublist(1)){
temp = line.split('');
rows = temp.length;
for(i = 0; i < rows; i += 1){
result[i] += temp[i];
}
while(i < cols){
result[i] += ' ';
i += 1;
}
}
return result.join('\n');
}
0 コメント:
コメントを投稿