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