ようじょのおえかきちょう

ふぇぇ お医者さんにペン持ったらダメっていわれた〜〜

D | 触ったことない言語で Hello world! Advent Calendar 2日目

www.adventar.org

導入

$ brew install dmd

1秒かからずに終わる。

コンパイルからの実行

$ dmd hoge.d
$ ./hoge

コンパイルと実行を一発でやってくれるやつ

$ rdmd hoge.d

Hello world!

// Hello world
import std.stdio;

void main() {
  writeln("Hello, world!");
}

おまけ

任意の数だけD言語くんがにょきにょき生える

import std.stdio;
import std.conv;

void main(string[] args) {
  auto limit = to!(int)(args[1]);

  for (uint i; i < limit; i++) {
    writeln("  _   _");
    writeln(" (_) (_)");
    writeln("/______ \\");
    writeln("\\\\(O(O \\/");
    writeln(" | | | |");
    writeln(" | |_| |");
    writeln("/______/");
    writeln("  <   >");
    writeln(" (_) (_)");
  }
}

f:id:yamasy1549:20161203115308p:plain

これをD鎖といいます

つまづいたとこ・へーっておもったとこ

  • https://k3kaimu.github.io/dmanual ここが一番よさげ
  • 指定子はとりあえず%s(文字列)にしといたらよしなにやってくれる
  • 変数は宣言されたら自動的に初期化される。ありがたい
    • int.initとかでデフォルトの初期化値がわかる
  • uintっていう符号無しの型がある うれしい使い方が知りたい
  • .hogeと書くことで、グローバルなシンボル hoge を指すことができる
  • .idup(コピー)されたときにできるやつはimmutableになって代入ができなくなる
  • 1..11Rubyでいう1...11なので注意

ソースコードとか

github.com