@9rnsr なるほど。ありがとうございます。実行時にならないとどのStreamを使えばよいかわからないから静的に解決できないと。しかし、そういう場合は動的多態を使い、そうでない場合は静的多態を使えばよいだけではないのでしょうか?
2011-02-27 01:37:13つまり、ユーザの責任で静的に解決するケースではテンプレートを使えるようになっていればよいし、そうでないケースではユーザの責任で動的多態を使えるようになっていればよいのではないのかな?
2011-02-27 01:40:50@Rayerd そうですね。すべて動的多態でも問題ないです(std.streamがそうですし)。テンプレートでStream構成はそのほうが早くなる(かも)&かっこいいから、です。
2011-02-27 01:44:30ハリウッドスタイルとは何でしょうか? RT @Rayerd: 動的多態の方は分岐部分を書くためにハリウッドスタイルのコーディングになるだろうか。
2011-02-27 01:45:50ソフトウェア開発におけるハリウッドスタイルについて http://d.hatena.ne.jp/nigredo/touch/20091101/1257082481
2011-02-27 01:49:27しかしハリウッドスタイルでよかったのかな。俺が読んだ本にはそう書いてあったような気がするんだけど、正確には違う言い方がされていたのかもしれない。
2011-02-27 01:51:32分岐部分はどのようになっているのがよいのかな?チャンクを読んだ後にユーザコードを呼び出して処理してもらうくらいしか思いつかない
2011-02-27 01:53:56@Rayerd 理解できました。フレームワークがコールバックするよなスタイルということですね。しかしこの場合、Streamはユーザーコードでpullしてやらないと駆動しないので、ハリウッドスタイルにはならない気がします。
2011-02-27 01:57:48自分のイメージ。 auto enc = EncodingCheck(binary_source); if (enc.mode == UTF8) foreach(l;Lined!string(enc)){} else foreach(l;Lined!wstring(enc)){}
2011-02-27 01:59:37@Rayerd Lined(const(char)[])ならバッファのSlice、Lined!stringならidupされる行を返すようにすれば確かに効率に差が出ます。
2011-02-27 02:12:50ローカルで作業中のI/Oモジュール http://bit.ly/hezLGb Lined!(const(char)[]) で、-inline -release ならstd.stdioを超える性能が出る (Win32のみ)
2011-02-27 02:15:54