// * D

#contents

* auto 

- 変数宣言で使うとスコープアウトでデストラクタが呼ばれる
- クラス宣言で使うとautoでしか宣言できなくできる

* Cと文字列

 import std.string;
 
 char[] s;
 toStringz(s);

\0で終わる char *を返す。~
旧 toCharz。

* 配列

** .sizeと.length

- .length 配列の長さ
- .size 使用バイト数(よく見たら非推奨だった)~
.sizeof~
動的配列だと .sizeof は参照なので固定の値

ハマった・・・

** 初期化子

staticな変数でないと使えない

** スライス

中の値は元の配列の参照。

* 正規表現

** マッチした位置の取得

	RegExp re = new RegExp(`[0-9]+`,null);
	char src[] = "2005/04/23";
	
	for (bit isFirst=true; ; isFirst=false) {
		int result = isFirst ? re.test(src) : re.test();
		if (!result) break;
	
		int start = re.pmatch[0].rm_so;
		int end = re.pmatch[0].rm_eo;
	
		printf("%s: %d - %d\n", toStringz(src[start..end]), start, end);
	}

publicではないpmatchを使う違法くさいコード。

* 整数除算

負の数を正の数で割ると怪しい。(v0.121)

* 静的メソッドとファイル名

v0.122

 // Foo.d
 class Foo
 {
   static void method() {};
 }

 // bar.d
 class Bar
 {
   static void method() {};
 }

 import Foo;
 import bar;
 // エラー
 // Fooをクラス名としてみてない
 Foo.method();
 // 成功
 Bar.method();

ファイル名とクラス名は一致させるなってことですか?

* import

 // A.d
 private import C;

 // B.d
 public import C;

- AをインポートしてもCは使えない
- BをインポートするとCも使える
-- デフォルトはこっち

* yaneSDK4D

- -dをつけないとキャストで怒られる
- floatをintに変換できないといって怒られる
-- y4d_draw/drawcontext.d
-- y4d_draw/fontrepository.d
-- y4d_draw/scenariodraw.d
-- など
- key in aaray を bitに変換できなくなったらしい
-- (key in aaray) != null で
- uintで-1はキャストしないと怒られる
- makefileよりMakefile.yaneSDK4D.linux
-- dmdのところを書き換え
-- lib〜.a を .libに
-- .o は .objに
-- debugをreleaseに
- .size は .sizeofに


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS