1 名前:デフォルトの名無しさん [2008/04/14(月) 15:16:22 ] プログラミング言語 D (D Programming Language) について語るスレッドです。 過去スレは >>2 ■本家 ttp://www.digitalmars.com/d/ ttp://www.kmonos.net/alang/d/ (和訳) ■コンパイラ ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家) ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド) ■参考URL ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究) ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF) ttp://dsource.org/ (dsource) ttp://tinyurl.com/3da5oa (C/C++に疲れた人のD言語) ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語) ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか) ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座) ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画) ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games) ■ IDE ttp://dronten.googlepages.com/dscite (DSciTE) ttp://forums.codeblocks.org/index.php?board=20.0 (Code::Blocks) ttp://www.dprogramming.com/entice.php (Entice Designer) ttp://www.dsource.org/projects/descent (Descent) ttp://www.dsource.org/projects/poseidon (Poseidon)
2 名前:デフォルトの名無しさん [2008/04/14(月) 15:17:08 ] ■過去スレ Part17 pc11.2ch.net/test/read.cgi/tech/1202623572/ Part16 pc11.2ch.net/test/read.cgi/tech/1195394435/ Part15 pc11.2ch.net/test/read.cgi/tech/1191582990/ Part14 pc11.2ch.net/test/read.cgi/tech/1184807424/ Part13 pc11.2ch.net/test/read.cgi/tech/1177499924/ Part12 pc11.2ch.net/test/read.cgi/tech/1171037394/ Part11 pc10.2ch.net/test/read.cgi/tech/1165621441/ Part10 pc8.2ch.net/test/read.cgi/tech/1158013550/ Part 9 pc8.2ch.net/test/read.cgi/tech/1146656260/ Part 8 pc8.2ch.net/test/read.cgi/tech/1137068104/ Part 7 pc8.2ch.net/test/read.cgi/tech/1122912733/ Part 6 pc8.2ch.net/test/read.cgi/tech/1109933426/ Part 5 pc5.2ch.net/test/read.cgi/tech/1102785854/ Part 4 pc5.2ch.net/test/read.cgi/tech/1091185216/ Part 3 pc5.2ch.net/test/read.cgi/tech/1079068715/ Part 2 f3.aaacafe.ne.jp/~null/cache/1079280501.html Part 1 pc5.2ch.net/tech/kako/1003/10036/1003674814.html
3 名前:デフォルトの名無しさん [2008/04/14(月) 15:17:57 ] ■関連スレ D言語なら俺に聞け pc11.2ch.net/test/read.cgi/tech/1108172110/ D言語を広めるスレ pc11.2ch.net/test/read.cgi/tech/1175432606/ D言語は多分コケると思っている人の数→ pc11.2ch.net/test/read.cgi/tech/1136288019/ 【次世代言語】D言語でOSを作ろう【Monaの移植?】 pc11.2ch.net/test/read.cgi/tech/1128794438/ バイナリをゲロる言語の魅力って何? pc11.2ch.net/test/read.cgi/tech/1160869311/ その他リンク 【Java/C/PHP/Perl/Ruby/Python/TeX】Eclipse M22 pc11.2ch.net/test/read.cgi/tech/1168166588/ eclipseってそんなに良いか?【エクリプス】 pc11.2ch.net/test/read.cgi/tech/1099300344/ 統合開発環境Eclipseプラグイン開発QA pc11.2ch.net/test/read.cgi/tech/1081517094/ "Code of the Nerds" Digital Mars C/C++ pc11.2ch.net/test/read.cgi/tech/1044210976/
4 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 18:35:41 ] 1otu
5 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 20:45:44 ] おつ
6 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 21:50:24 ] res!(1) << '乙';
7 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:17:09 ] in { assert(otsu >> 1); }
8 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:03:12 ] invariant 乙
9 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:56:08 ] enum 乙
10 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:19:53 ] throw new Otu(">>1 ");
11 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 06:55:12 ] せっかくなんでテンプレにしときますね template Res(int N, O) { res!(N) << O.toString(); in { assert(O >> N); } invariant O = N; enum O = N; throw new O(">>" ~ N.toString()); } mixin Res(1, 乙);
12 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 09:31:07 ] ちょっと前にstd.slistって無かったっけ。俺の見た幻……? それはそうと>>1 乙。
13 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 12:55:41 ] >>12 あったよ
14 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 17:45:58 ] >>1 おつゆ
15 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:08:17 ] (´・ω・` )乙 ←ポニーテール
16 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 09:57:50 ] 刀、 , ヘ /´ ̄`ヽ /: : : \_____/: : : : ヽ、 ,. -‐┴─‐- <^ヽ、: : : : : : : : : : : : : : : : : : : : : : } /: : : : : : : : : : : : : :`.ヽl____: : : : : : : : : : : : : : : : : : / ,. -──「`: : : : : : : : : :ヽ: : : : : : : : :\ `ヽ ̄ ̄ ̄ フ: : : : :/ /: :.,.-ァ: : : |: : : : : : : : : :\: : : : :: : : :ヽ \ /: : : :/  ̄ ̄/: : : : ヽ: : : . . . . . . . . . . .、 \=--: : : :.i / /: : : : :/ /: : ∧: \: : : : : : : : : : ヽ: :\: : : 〃}/ /: : : : :/ 、 . /: : / . : : :! ヽ: : l\_\/: : : : :\: ヽ彡: : | /: : : : :/ |\ /: : ィ: : : : :.i: : | \!___/ ヽ:: : : : : : :\|:.:.:.:/:! ,': : : : / |: : \ / / !: : : : :.ト‐|- ヽ \: : : : : l::::__:' :/ i: : : : :{ |: : : :.ヽ l/ |: : :!: : .l: :| \: : : l´r. Y {: : : : :丶_______.ノ: : : : : :} l: : :l: : :ト、| 、___,ィ ヽ: :| ゝ ノ '.: : : : : : : : : : : : : : : : : : : : : : / |: : :ト、: |: :ヽ ___,彡 ´ ̄´ ヽl-‐' \: : : : : : : : : : : : : : : : : : イ !: :从ヽ!ヽ.ハ=≠' , ///// ///u /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ V ヽ| }/// r‐'⌒ヽ イ〉、 ヽ、______ー‐‐' ィ´ /:/:7rt‐---、 こ、これはポニーテールじゃなくて ィ幵ノ ./:/:./:.! !: : : : :!`ヽ >1乙なんだからね!
17 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 12:32:03 ] D言語のネタ来るまで乙禁止
18 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 17:24:48 ] Dでデバイスドライバは書けますか?
19 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 17:37:19 ] OS書けるんだし書けるんじゃないのかね
20 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 11:13:17 ] >>11 ttp://codepad.org/I0zhbCCh Line 3: no identifier for declarator res!(N) Line 3: semicolon expected, not '<<' Line 3: Declaration expected, not '<<' Line 4: Declaration expected, not 'in' Line 5: statement expected to be { }, not O Line 6: enum declaration is invalid Line 6: Declaration expected, not '=' Line 7: Declaration expected, not 'throw' Line 8: unrecognized declaration エラー大杉
21 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 11:14:59 ] 乙失敗
22 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 12:50:17 ] 2.0でmutable/const/invariant周りのエラーを出さずに 一回でコンパイルが通るプログラムを書くことが全然できない件についてorz 複雑すぎるよう
23 名前:デフォルトの名無しさん [2008/04/18(金) 13:15:53 ] 直感的じゃないよな じゃあどうするのかと言われたら困るが
24 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 16:00:57 ] 駄目言語
25 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 16:42:16 ] 「opDot」が来る説 lists.puremagic.com/pipermail/digitalmars-d/2008-April/036205.html
26 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 17:04:01 ] 標準ライブラリの関数の引数が mutable/const/invariantのどれなのか 把握していないといけないのが辛すぎる 関数の引数は全部constでいいんじゃないの?
27 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 20:23:10 ] >>26 > mutable/const/invariantのどれなのか > 把握していないといけないのが辛すぎる うげぇなんだそれ。作者はユーザインターフェースってもんを一から勉強しろよ
28 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 21:09:09 ] 間違えればエラーが出るから全く問題ない。
29 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 21:11:32 ] というか、もはやphobosまともに保守されてないだろ。 DMDと一緒に配布されてるphobosがコンパイル通らなかったりするし。
30 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 21:15:35 ] ここなんのスレだったっけ?
31 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 22:27:47 ] >>28 これが信者脳ってやつか
32 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 22:58:00 ] >>26 >把握してないと 型のある言語だったら大抵そうじゃね? const/invariantとか別れてるのはDくらいかもだけど
33 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 23:21:08 ] 引数の型ぐらいIDEが表示してくれるそれでいいんじゃね。
34 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 23:21:21 ] >>32 動的型付け言語も仕様上型のない言語も、不適切な型や値を突っ込めば 実行時にコケるか結果がおかしくなるわけだから、なんにしろ確認は必須だよねえ。 とはいえ、言語の性能ってのはそれ自体の性能だけじゃなくて、実際にはエディタや 周辺環境の性能も関わってくるから、そのへん不足してるせいで>>26 ってことなら、 まあD言語(の言語自身か周辺環境)が悪い、といっても間違いじゃないだろうけど。
35 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 23:22:51 ] それよりも、参照渡しと値渡しの区別が呼び出し側でつかないのだけはどうにかして欲しい。
36 名前:22==26 mailto:sage [2008/04/19(土) 00:43:36 ] >>28 それはひどい >>29 phobos捨てるべきなのか? >>33 伝説のIDEがあるならそれで一応満足するのだが >>32 .34 最大の問題は関数の利用者が関数のために 明示的にdeep copyしないといけないところだと思えてきたよ 都合があるのは関数側なのにね 必要なら(.idupの代わりに)関数呼び出し直後に関数内で使う前にdeep copyして欲しい
37 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 00:54:15 ] >>31 氏ねよカス(笑)
38 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 00:58:31 ] 最近の言語は文字列をimmutableな形式で持つことが多くなってきてるよね。
39 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 01:24:26 ] std.stringなんかはinvariant(char)[]とconst(char)[]の両方のオーバーロードを提供すればいいんじゃないの。
40 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 08:00:13 ] 関数の引数ってconst()とrefとinとoutだけでいんじゃね?
41 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 10:54:42 ] >>40 いいよな 俺はそうしてる
42 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:43:45 ] >>40 www.kmonos.net/alang/d/2.0/const.html にあるように エイリアシングの問題があるから、invariant引数は必要なところには 必要だと思う。 だがエイリアシングもクソもなく新しいinvariant文字列を返すような std.stringの多くの関数にはどう考えても不要だと思う。 string,wstring,dstringの定義がphobosのObjectの項に書いてなかったりするし、 stringをinvariantにしたの忘れてるんじゃないかな。
43 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:56:03 ] スライスを返したりする場合はinvariant必要不可欠だよね。 そこで例えばこういうふうにするのがいいと思う。 string[] split(const(char)[] str) { return split(str.idup); } string[] split(invariant(char)[] str) { return /*空白で区切ってスライスを返す*/; } もちろん例えばtolowerならinvariantのは定義せず、constだけでいい。
44 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:59:57 ] > もちろん例えばtolowerならinvariantのは定義せず、constだけでいい。 引数をinvariantにすればtolowerは純粋関数になるから、 ある種の最適化ができる可能性があるよね。 そういう意味でこちらもやはり両方定義すべき。
45 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 12:08:46 ] >>44 invariantとかconstとかは純粋関数かどうかには関係なくね? (引数以外の環境に依存せず同じ結果になるから。) マルチスレッド対応とかはtolowerでやることじゃないだろうし。。
46 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 19:52:35 ] >>43 それいいな でもそうなるとconst(char)[]版を書くの面倒 invariantにmutableを渡したらdeep ocpyするならこんな感じ //alias invariant(char)[] string; string[] split(string str); string s = "foo"; char[] t = "bar"; string[] u = split(s); string[] v = split(t); // deep copy implicitly
47 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 19:57:12 ] >>43 転送する引数が一つならまだしも複数になったら 自分で転送関数を書くのはやだぞ
48 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 20:58:02 ] >>46 プリミティブ型の配列ならそれでもいいけど、 オブジェクトの配列だったりすると何か問題が起こりそうな気が
49 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 21:23:08 ] opInvariant()の出番ですね!
50 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 21:28:10 ] その前にopCastを実用可能なものにしろと…
51 名前:デフォルトの名無しさん [2008/04/19(土) 21:57:26 ] dmd1.028 static assert(is(void function()==function)); // static assert is false なぜさ?
52 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 22:00:16 ] >>51 void function()は関数ポインタ型
53 名前:51 [2008/04/19(土) 22:52:43 ] >>52 アホな俺にも static assert(is(void delegate()==delegate)); //ok static assert(is(void function()==function)); // static assert is false この違いが分かるように教えてくれまいか
54 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 23:02:57 ] >>53 is(T==delegate) -- Tがデリゲート型 is(T==function) -- Tが関数型 void delegate() -- デリゲート型 void function() -- 関数ポインタ型 void f(){} typeof(f) -- 関数型 typeof(&f) -- 関数ポインタ型 おk?
55 名前:51 [2008/04/19(土) 23:21:10 ] >>52 ,54 static assert(is(typeof(void function())==function)); //ok 大変勉強になりました。
56 名前:51 [2008/04/19(土) 23:25:55 ] ↑失敗 void func(){} static assert(is(typeof(func)==function)); //ok ありがとうございました。
57 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 00:30:38 ] 俺も前それで1時間くらい悩んでしまったwww
58 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 00:35:25 ] >>57 typeidで確認しろwww
59 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 11:54:17 ] class A{} void f(const(A) a){f(cast(invariant(A))a);} // ??? void f(invariant(A) a){} 配列のときは.idupでいいけど配列じゃないときはどうやってclone作ればいいの? castしちゃまずいよね? 自前で.idup相当の処理を書かないといけないのかな class A{invariant(A) iclone()const{return new invariant(A);}} void f(invariant(A) a){} void f(const(A) a){f(a.iclone());}
60 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 12:07:10 ] それと配列でもこういうときは.idupできないけど .dupとcast(invariant(TYPE)[])でいいのかな? invariant(A)[] g(const(A)[] a){ //return a.idup; // error return cast(invariant(A)[])a.dup; }
61 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 12:09:27 ] >>60 いや、よくない。 const(A)[]であるaの参照がどこかにある限り、 a.dupの要素のメンバは変更されうるから、 何らかの方法でAをディープコピーしないといけない。
62 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 13:43:53 ] .dupってディープコピーじゃないの?
63 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 14:04:39 ] std.contractだかなんだかにあるやつが 結局>>60 な感じだったとおもったが
64 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 14:36:43 ] >>62 まさか。全く同じ内容の配列を複製するだけだよ。 >>63 assumeUniqueだよね。 これはプログラマの良心によってinvariant性を担保するもので、 >>60 のような場合に使うのは不味いね。
65 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 15:13:19 ] D言語っていろんな仕様のバージョンがあって、 自分に合ったものを選んで使えば良いときいたんですけど本当ですか?
66 名前:60 mailto:sage [2008/04/20(日) 16:55:53 ] >>61 確かにそうですね まとめるとこんな感じでしょうか class A{ int m; this(int m){mem=m;} const A opClone(){return new A(mem);} const invariant(A) opInvariantClone(){return new invariant(A)(mem);} } void f(A x); void g(const(A) x); void h(invariant(A) x);
67 名前:60 mailto:sage [2008/04/20(日) 16:56:27 ] f(new A); f(new const(A));//opClone()が暗黙的に呼ばれる f(new invariant(A));//opClone()が暗黙的に呼ばれる g(new A); g(new const(A)); g(new invariant(A)); h(new A);//opInvariantClone()が暗黙的に呼ばれる h(new const(A));//opInvariantClone()が暗黙的に呼ばれる h(new invariant(A));
68 名前:60 mailto:sage [2008/04/20(日) 16:56:57 ] //A x = new invariant(A); // is as //A x = (new invariant(A)).opClone(); //invariant(A) x = new A; // is as //invariant(A) x = (new A).opInvariantClone(); //これはうまくいくかどうかよくわからない //invariant(A)[] copy(const(A)[] ar){ // return ar; //} // is as //invariant(A)[] copy(const(A)[] ar){ // invariant(A)[] ret; // foreach (e; ar) t ~= e.opInvariantClone(); // return ret; //}
69 名前:60 mailto:sage [2008/04/20(日) 16:57:23 ] opCloneが未定義のときにconst/invariant -> mutable opInvariantCloneが未定義のときにmutable/const -> invariant に変換しようとしたときは今までどおりエラーになって 参照型メンバのディープコピー忘れを防止・・・とか なんていうかGCばんざい __EOF__
70 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 17:02:49 ] >>65 すぐ仕様が変わるだけで1.x系と2.x系のニ種類しかないよ
71 名前:デフォルトの名無しさん [2008/04/23(水) 02:40:09 ] class child : private parent { ... } この場合の private みたいに親クラスに属性つけるとどうなるんだっけ? 何も変わってないような気がするんだが。 export属性つけると怒られるし(dmd1.028に)。
72 名前:71 [2008/04/23(水) 03:30:19 ] privateに関しては自己解決した。 お騒がせしました。
73 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 16:59:42 ] 静かだな
74 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:23:06 ] そろそろ更新くるんじゃないかな
75 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 19:50:57 ] 何か難しいことでもしてるのかな
76 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:21:55 ] いきなり3.0とかかw
77 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:24:42 ] そして3.1でブレイクだな
78 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:26:22 ] 次は95とかですかね
79 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:30:41 ] えっ、2095年?
80 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:51:05 ] 3/1に3.1、9/5に95ですね、わかります。
81 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 00:17:30 ] え、それだけ言っておいてD2.013はスルーですか…? Version D 2.013 Apr 22, 2008
82 名前:デフォルトの名無しさん [2008/04/25(金) 01:24:24 ] >Html source files are now deprecated. え?アレ? 密かに期待してたんだが、、俺だけだった?
83 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 01:51:11 ] ・opDotはopCastのように盲目的に特定の型のインスタンスへ転送する機能 ・switchのcaseはconstかinvariantな整数型変数なら定数じゃなくともOK ・HTMLファイルにD言語のソース埋め込める機能は黒歴史 ・pureとnothrowは書くだけ書けるようにしておいたけどまだ何も機能しないよ ・synchronized文あるからvolatile文は非推奨 ・__thread記憶クラス実装したけど、言語上での表現はたぶん別の形になるよ ・関数オーバーロードで、派生クラスはより近い祖先の引数型にマッチするようになったよ あたりが主な変更? opCastといいopDotといい謎な仕様だと思った。 HTML埋め込みは、Dコンパイラにやらせるべき仕事じゃなかったんだろうな、と思った。
84 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 02:43:05 ] opDotはalias thisみたいな匂いがするね
85 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 04:47:03 ] >>83 switchのcaseはさりげなく面白い変更だな。 同じ動作だが基準がインスタンスごとに変えられるようになるのかな?
86 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 06:25:57 ] switchはどうせなら文字列でも出来るほうが面白そうな気がする
87 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 08:45:43 ] >>81 気づいてたら教えてくらさい
88 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 13:23:23 ] 何故だかキャッシュされててChangeLogの更新に気づかなかった。 // main.d import test; void main(){ error(); } // test.d import std.stdio; void error(string file = __FILE__, int line = __LINE__){ writefln("Error: %s(%d)", file, line); } > Error: main.d(4) おお、これでまともにUnitTest用ライブラリが書ける。
89 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 13:43:07 ] >>86 switchの条件に文字列指定は前から出来るけど・・・ >C/C++と違い、 文字列もswitch文で使用できます。 って書いてるし。
90 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 13:47:28 ] >>89 >>86 はそういう意味じゃないだろ >>83 の「switchのcaseはconstかinvariantな整数型変数なら定数じゃなくともOK」に対して,「const/invariantな文字列をcase文に使えたら面白い」という話だろ
91 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 14:21:51 ] まあ多分こっちの意図と違う事言ってるだろうなと思いつつ勢いに任せて書いた。すまぬ。
92 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 07:31:21 ] switch caseのconst変数について。 スタックにあるconstな変数は受け付けますが、 ヒープにある可能性のあるものは全部NGかなという感じです。 関数内(ネスト関数の外側関数含む)でconstな変数は受け付けますが、 クラスフィールド上でconstなものは受け付けません。
93 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 14:02:04 ] D面白そうだからやってみたいんだけどオススメの本あったら教えて 英語か日本語の本で
94 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 14:13:24 ] 他の言語知ってるなら言語仕様のページ見るだけで十分だと思う。
95 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 14:19:32 ] >>93 日本語の本で一番新しいのは『D言語パーフェクトガイド』。ただし古くて何の役にも立たない。 英語で最近出たのは『Learn to Tango with D』。まだ読んでないから内容の是非はわからない。
96 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 14:21:23 ] D はリアルタイムで言語が大きく変わるから ついていくには本なんて役に立たない
97 名前:93 mailto:sage [2008/04/27(日) 14:24:10 ] learn to tango->ダンスの本かと思ってスキップしてた amazonで買った
98 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 15:08:48 ] Dの本って出版された時点で時代遅れになってそうだな。
99 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 15:10:25 ] D 1.0 で止まっていいのなら何とかなりそうではあるが・・・ D 2.0 に興味があるなら本は無駄だと言わざるを得ない
100 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 15:30:26 ] opDotって委譲しやすくするって認識でおk?