タグ

D2.0に関するyheldのブックマーク (8)

  • D言語2.0でのWindowsアプリケーション - ...ing logging 4.0

    編集中です(`・ω・´) http://rayerd.ddo.jp/pukiwiki/ingwiki/index.php?D%B8%C0%B8%EC2.0%A4%C7%A4%CEWindows%A5%A2%A5%D7%A5%EA%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3 てなわけで,まだ見かけたことのない「D言語2.0でのWindowsアプリケーション」のサンプルコードを書きました. 今度時間ができたらビルドの仕方とか詳しく書きます. これは,やねうらおさんがD言語をいじってたくらいの時期に公開されていた,Win32APIを直接叩いているサンプルコードのD言語2.0対応バージョンみたいなものです. 実際にはDFLとか使えよって話なんですけどね ←結論 注意 コンパイラのバグなのか何なのかわかりませんが,dmd2.004ではコンパイルできません. 代わりにdmd2.003を

    D言語2.0でのWindowsアプリケーション - ...ing logging 4.0
  • コードをD 1.xxxからD 2.xxxに移行するための方法 - 謎's キッチン

    StructureWikiでした時のノウハウ。 まずは全てのchar[]をstringに機械的に置換 voidもconst(void)に機械的に置換 char*もconst(char)*に機械的に置換 要素の書き換えをしてる所はstringからchar[]に戻す(エラーが出るので一目瞭然)。 foreachで宣言した変数を書き換えてる場合は別の変数を定義してそれを使う(エラーが出るので一目瞭然)。 クラスのthis内で書き換えるメンバ変数のconstはfinalにする(エラーが出るので一目瞭然)。 どうしてもstringをcharやvoidに渡さなければいけない場合はcastと.dupを使い分ける(それとadler32の引数がvoid[]な件)。 StructureWikiではここまでやってみたけど、コンパイラがクラッシュするようになった罠。

    コードをD 1.xxxからD 2.xxxに移行するための方法 - 謎's キッチン
  • const/invariant member function - ...ing logging 4.0

    なにげに const メンバ関数が追加されてる? それと invariant メンバ関数なるものも. class A { private: int value; int mutableMember() { value = 1; return value; } const int constMember() { /+value = 1;+/ return value; } invariant int invariantMember() { /+value = 1;+/ return value; } public: void foo() // mutable member { auto x = mutableMember(); auto y = constMember(); //auto z = invariantMember(); // error, mutable member can

    const/invariant member function - ...ing logging 4.0
  • 渋滞情報 - Outlandish Watch

    実は先の方が詰まっていて更新が滞っています……。 標準ライブラリ移植は実際ソースもあるし、さらに言えばコピペばっかりで特に書くようなことをしてないし(爆)、どうでもいいのですが、実はこの先にページング・メモリ管理・割り込み処理が待ち受けていて、そちらの実装に手間取っているのです……。 ひみつプロジェクトの〆切もあるし、しばらく更新が滞るかもしれません。まあまっさらな状態でD言語を動かすだけならもうソースもあるし、今の状態でもきっと遊べます。私なんかよりうまい実装をしてもらえるかもしれない(笑)。 さらに問題なのがD言語のバージョン2.0が出てしまったことだったりします(滝汗)。

    渋滞情報 - Outlandish Watch
    yheld
    yheld 2007/06/23
    >さらに問題なのがD言語のバージョン2.0が出てしまったことだったりします(滝汗), あぁ、そういえば、そうだ。D言語の仕様がまだ定まってないことをすっかり忘れてたw
  • 配列同士の比較演算 - ...ing logging 4.0

    配列同士の比較演算についてあまり理解していなかったので補習. import std.stdio; void main() { string a = "EXIT"; string e = "EXIT".dup; bool _is = a is e; // false bool _equals = a == e; // true writefln(_is); writefln(_equals); } ということは; is : 参照先アドレスでの比較 == : 値での比較 でいいのかな.

    配列同士の比較演算 - ...ing logging 4.0
    yheld
    yheld 2007/06/20
    あ、そっか、isはオブジェクトか。
  • dmd 2.000 - 謎's キッチン

    まだ試してないけど感想だけ。 文字列と配列リテラルの動作の不整合が解決されてる。内部のコードが幾分ましになってるはず。 const、invariant、finalはしっかり考えられてる。当にこれが一番なのかは疑わしかったが、読んでみるとこれが一番な気がしてきた。 stringという型名は長すぎ。strにしてほしかった。それと文字列がimmutableである必要はあるのか(スレッドを使う場合を除く)。まぁchar[ ]使えばいいんだけど(phobosも問題無い感じだし)。 .idupはconst(char)[ ]からinvariant(char)[ ]を作成することか。 後は速度がどう変化したかが気になる。 幾つか追記。 2.000のリリース早杉と思った。結局ASTもExpression Aliasもyieldも入らなかったけど、でもまあ幾つかの重要なリテラルのサポートの為だけでも2.00

    dmd 2.000 - 謎's キッチン
  • Final / Invariant / Const - ...ing logging 4.0

    ふむふむ. import std.stdio; void main() { // Note: type of "string literal".dup is char[] { // char[] s = "hoge"; // error, invariant(char)[] to char[] char[] s = "hoge".dup; s[0] = 'H'; s = "HOGE".dup; writefln(s); } // Note: type of string literal is invariant(char)[] { invariant(char)[] s = "hoge"; //s[0] = 'H'; // error, not mutable s = "HOGE"; writefln(s); } // Note: alias const(char)[] string; {

    Final / Invariant / Const - ...ing logging 4.0
  • string の導入 - ...ing logging 4.0

    なるほどなぁ! 色々いじってて感じたのは,これからは char じゃなくて string を使えという意思. 後で見直すために書いておこう. (あ,いや,えらい人には当たり前のことかもしれないです(^^;;;) テンプレートに値パラメータとして文字列リテラルを渡すとき,パラメータの型は文字列リテラルの型である invarint(char) になる. ここでテンプレート側を template f(char s) と書いてしまうと,マッチするテンプレートがないとコンパイラに怒られる. invarint(char) から const(char) への暗黙の変換は許されているから,テンプレート側を template f(string s) にすると素直だ. string は const(char) のエイリアスだから. //template f(char[] s) // error, "hello

    string の導入 - ...ing logging 4.0
  • 1