D言語は、本来C++の代替と捉えるべきと思うが、
ここではPerlのように書けるがずっと高速な言語と位置づけて、
Perlで書いたプログラムをD言語で書いてみる。
Perlもたまに遅いと感じることがあるので、
それをDで書き直してみたいというのはあるが、
実際には、これを通じてD言語を勉強していこうというのが趣旨である。
D言語の使い方は、このへんから。
http://www.kmonos.net/alang/wnd/
最初の一歩
cat代替のようなプログラムを書いてみる。
Perlだとこんな感じだろうか。
while(<>) {
print;
}
これをD言語にしてみる。
import std.stream;
import std.cstream;void main(char[][] arg) {
foreach(char [] a ; arg[1..length]) {
File inp = new File(a, FileMode.In);
foreach(char [] line ; inp) {
dout.writeLine(line);
}
inp.close();
}
}
importというのは、Cの#includeみたいなもの。
import std.stream;
import std.cstream;
使いたいライブラリを書いておく。
さすがにmain関数はいる。
void main(char[][] arg) {
型はちゃんとある。
char は char ** みたいなもの。ただし、配列。
Dの配列は長さを持っているので、int argcのようなものは必要ない。
foreachが同じように使える。
foreach(char [] a ; arg[1..length]) {
ただし、argの最初に入っているのは実行ファイルのパスなので、
Perlと同じようにスライシングを使って最初のは捨てている。
Perlと違って、上のように書くと、
arg[1]からarg[length-1]までが実行される。
読み書きは上のよう。
doutが標準出力。