1 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 10:10:24 ] プログラミング言語 D について語るスレッドです。 過去スレは >>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フロントエンド) ttp://gdcmac.sourceforge.net/ (GDCのmac用バイナリ) ■参考URL ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究) ttp://dsource.org/ (dsource) ttp://www.sun-inet.or.jp/~yaneurao/dlang/ ttp://wisdom.sakura.ne.jp/programming/d/
10 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:23:38 ] int いちおつ; いちおつ; ^^
11 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:29:03 ] >>10 副作用のない式文は不正じゃね
12 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:37:21 ] \ ^o^ /;
13 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 16:11:00 ] オブジェクト初期化構文使えるようにならんかなあ。 var foo = new Class { bar = 1, baz = 2 };
14 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 16:37:47 ] そういうような使い方はclassじゃなくてstructでやるべきなんじゃないかと思う。 構造体リテラルがそういうようなのをサポートしてくれたらいいんだけどね。
15 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 16:57:46 ] struct X { int a; int b; int c; int d = 7;} static X x = { a:1, b:2}; // c は 0, d は 7
16 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 16:58:47 ] イニシャライザは代用にならんだろ。
17 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:11:58 ] これって国内で実際にビジネスに使われたことある? 言語の使われるか否かは、その仕様よりIDEって印象があるので気になる。
18 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:15:52 ] あるわけがない。
19 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:18:32 ] >>4 リンク集つくるなら、タイトルぐらい書け('A`)
20 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:25:10 ] 自分でやれよ
21 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:36:17 ] >>17-18 ノ なにげに使ってる
22 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:37:51 ] すいません質問です std.file.getAttributes の戻り値の意味はどこかに書いてありますか?
23 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:45:38 ] Linuxならman statでst_modeの説明のところ。 WindowsならMSDNのGetFileAttributesのところ。
24 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 18:56:48 ] >>23 ありがとうございます!
25 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 19:22:51 ] >>16 正直言うと、12が何に使うものなのか分からんかった。 無名構造体みたいなものだろうか
26 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 19:24:51 ] オブジェクトのリテラルみたいなもんだろう。 newと同時にプロパティを設定することができる。 C#3.0にあるらしい。
27 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 21:25:29 ] 25で言いたかったのは12じゃなくて13だった。 >>26 auto x = new class("foo", 3, "bar"){ char[] a; int n; char[] s; this(...){ foreach(int i, v; this.tupleof){ this.tupleof[i] = va_arg!(typeof(v))(_argptr); } } }; という感じのを、プロパティ名も指定可能にしたようなもの?
28 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 21:34:35 ] C#の、 var foo = new Class { bar = 1, baz = 2 }; は、Dだと Class __tmp = new Class; with(__tmp) { bar = 1; baz = 2 } auto foo = __tmp; と等価。 >>27 と等価なのはC#だと、 var x = new { a = "foo", n = 3, s = "bar" }; だね。同じ型・名前のプロパティを同じ順番で並べた匿名型は同じ型になるという優れもの。
29 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 21:46:16 ] 先に前スレ埋めようぜ。
30 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 22:22:29 ] 980を超えたスレは一定期間で勝手に落ちるよ。 なんか不都合あったっけ?
31 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 22:24:29 ] ないな
32 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 22:37:49 ] DMDなら不具合だらけですが><
33 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 05:11:44 ] 無名クラスってマイナーなのか、DIとかってこのスレ住人にはあまり普及してない?
34 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 06:08:17 ] Dに無名クラスがありませんから DIってなに?
35 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 06:09:13 ] dependency injection でしょ。>>33 は誤爆じゃないの?
36 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 06:11:00 ] うおレスはえー >>13 が無名クラスでは
37 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 07:10:21 ] ネットからD言語のコンパイラをダウンロードして解凍して環境変数にpathを通すバッチファイルです あったら楽しいなと思って趣味で作ったので、何か改良の余地があれば行ってください。 Installer of D Compilor for win2000/XP 2sen.dip.jp:81/cgi-bin/upgun/up1/source/up6740.lzh
38 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 11:43:18 ] >>36 Dにも無名クラス自体はあるからなあ。 auto x = new class{ /*クラス定義*/ };
39 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 13:30:30 ] >>37 既存のsc.iniを残す機能が欲しいような
40 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 13:44:07 ] Dの無名クラスマイナーだNE!( ^ω^)
41 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 16:14:57 ] 俺はマイナー好き
42 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 16:32:28 ] メジャー好きがここにいる時点でおかしいだろ
43 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 16:48:22 ] Java の無名クラスみたいに基底を指定することはできないの?
44 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 16:53:35 ] できるよ。マニュアル読んできな。
45 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 01:49:16 ] (new Otsu()).res(1); 前スレ>>1000 そうだといいな・・・
46 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 02:03:50 ] >>45 いやちょっと待て 世界が沈むとかどう考えても不吉な表現すぐるだろ
47 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 04:58:15 ] キン肉すぐる
48 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 11:39:10 ] >>46 そうか?
49 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 14:09:27 ] そりゃだって世界を支えるあるいは盛り上げてゆくためのツールだろ 沈めてどうするんだよw
50 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 15:07:31 ] 今更な話だけど、>>45 みたいにnew Otsu()をカッコで括らないと すぐにメンバにアクセス出来ないのは少しだけメンドイなぁ、と思う。 Javaだと不要だから余計……。C++とかC#じゃどうだっけ。
51 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 15:18:48 ] Javascriptも括弧でくくる必要ある。C++とC#も同じだったはず。 個人的にはOtsu.new()ってすべきだと思うけど、new() Otsu()が表現できなくなるしなぁ。
52 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 15:21:01 ] ありゃ、 >Javascriptも括弧でくくる必要ある。 は勘違いだったっぽ。スレ汚しスマソ。
53 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 15:32:03 ] >>50 C#は new Class().Memberでいけたと思う。 でも、視覚的に気持ち悪いから括弧つけてる。
54 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 16:02:02 ] class X{ int a = 3; static X opCall(){ return new X; } } void main(){ printf("%d\n", X().a); } これなら外側の括弧どころかnewもいらないよ!
55 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 16:32:55 ] CTFE時にassert(0);が無視されるのはバグ? (DMDv2.002)
56 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 20:01:49 ] www.kmonos.net/alang/d/expression.html > コンパイラーはassert式を全く評価しないことも許されています。 > コンパイラは、最適化やコード生成の段階で、 実行がassert(0) > の部分には到達しないことを仮定してよいものとします。 だとさ。 でもこっちではassertに引っかかるコードで > Error: assert(0) failed > Error: cannot evaluate f() at compile time って言われた。2.002。
57 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 18:04:15 ] 更新こないね 修正箇所、機能追加箇所ともに期待が たかまってしまう
58 名前:50 mailto:sage [2007/07/22(日) 19:37:55 ] >>51-54 どもども。 俺もOtsu.new()としたい派でつ。出来ればnew()以外の名前にも出来れば最高ネ。 > new() Otsu()が表現できなくなるしなぁ。 これ何のことだか全然知らないのだけど、どういう意味でしょか? 俺、なんか言語仕様見逃してる?
59 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 19:43:52 ] new(/*アロケータの引数*/) Otsu(/*コンストラクタの引数*/) という構文だから、 Otsu.new(/*コンストラクタの引数*/) とやっちゃうと、アロケータの引数は指定できなくなっちゃう、という話だと思う。
60 名前:58 mailto:sage [2007/07/22(日) 19:47:46 ] >>58 に自己レス。自己解決しました。スレ汚しすいません。 アロケータに引数なんて渡せたのね……不勉強ですた。 なるほどそう簡単にはstaticメソッドと同じ呼び出し構文に出来ないわけだ。
61 名前:58 mailto:sage [2007/07/22(日) 19:51:46 ] なんというリロードしろ俺。 >>59 ありがとです。まさにその話でした。
62 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 19:54:27 ] >俺もOtsu.new()としたい派でつ。出来ればnew()以外の名前にも出来れば最高ネ。 勝手にそう定義すればいいんじゃないの?
63 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 20:12:31 ] >>59 >Otsu.new(/*コンストラクタの引数*/) >とやっちゃうと、アロケータの引数は指定できなくなっちゃう、という話だと思う。 個人的には ObjC 風に Otsu.alloc(argForAllocator).init(argForConstructor); にすれば良いと思うのだけど。
64 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 20:15:50 ] それは、変な中間オブジェクトができるから好きじゃないなあ。
65 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 20:23:30 ] じゃあ Otsu.newWithCustomeAllocator(argAlloc, ArgConst) ならみんな納得なのかな。
66 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 20:25:16 ] Otsu.new!!(argAlloc)(argCtor) でいいよ。
67 名前:65 mailto:sage [2007/07/22(日) 20:25:48 ] 名前が長いと typo するな... そこら辺は Omni Complete で
68 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 20:30:07 ] カスタムアロケータを使うケースがそんなにあるとは思えない。 明示的にnew(allocator) Obj(construction); とすればいいだけじゃね? でなけりゃ、ファクトリクラスを作るとか。
69 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 20:40:13 ] これ何の話してんの
70 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 20:42:16 ] あまり無いケースの為に特殊な構文を付け加えるのもなんだかなあ…
71 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 22:11:44 ] >>50 ,53 そういうとき、 class C{ static class C_{ int n=3-1; } } void main(){ printf("%d\n", (new C.C_).n); } とかしたいときどうなるの? new (C.C_).n とかいう感じ?
72 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 22:16:27 ] C#はnew C()の()の省略が認められてない。 Javaは白根。
73 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 03:27:23 ] DMD 1.019
74 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 07:28:49 ] What's New for D 1.019 Jul 21, 2007 New/Changed Features Added 0x78 Codeview extension for type dchar. Added extern (System) Bugzilla 345: updated std.uni.isUniAlpha to Unicode 5.0.0 System?
75 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 07:42:58 ] > System is the same as Windows on Windows platforms, > and C on other platforms. 'System'はWindowsプラットフォームでは'Windows'と同じであり、 それ以外では'C'と同じです。 要するにプラットフォーム依存のLinkageを指定できるってことだな。
76 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 09:09:04 ] What's New for D 2.003 Jul 21, 2007 New/Changed Features * Added 0x78 Codeview extension for type dchar. * Moved next member from Object.Error to Object.Exception * Added ForeachRangeStatement * . Added extern (System) * Added std.traits * Bugzilla 345: updated std.uni.isUniAlpha to Unicode 5.0.0
77 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 11:40:01 ] 大きいのか小さいのか微妙な変化だな… 個人的には __traits よりも、デバッグ時に関数の隠し引数にでも _caller とか入れてくれたらと思う。
78 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 11:48:57 ] ええい、たった今初めてversion2系をちょっと試してみて速攻1系に戻したところだというのにw しかし何だろう、このforeach周りの不自然な強力さは。 RangeクラスとRangeリテラルを作ろうとは思わなかったんだろうか。 あと範囲を表す関係の演算子って最後を含むか含まないかで".."と"..."あたり二つ用意しないとどことなくメンドイのよね。 traitsはメタプログラミング関係か?
79 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 12:09:07 ] これは強力・・なのか?
80 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 12:44:30 ] >>77 debugブロック?内でしか使えないとか
81 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 15:59:38 ] ForeachRangeキタ━━━━━━(゚∀゚)━━━━━━ !!!!! これを待ってたんだよ。ウォルタたん大好き!
82 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 16:23:34 ] perlは、 for (0..3){print $_;} 0123なんだけど D 2.003 だと foreach (i; 0 .. 3){writef(i);} 012なのね
83 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 16:28:12 ] それは配列のスライスと一緒だな。
84 名前:77 mailto:sage [2007/07/23(月) 17:23:02 ] >>80 import std.stdio; struct Caller{ string fileName; int line; } debug void func(Caller _caller, int x){ writefln("%s(%d) : x = %d", _caller.fileName, _caller.line, x); writefln(x); } else void func(int x){ writefln(x); } void main(){ debug func(Caller(__FILE__, __LINE__), 10); else func(10); } こういうようなのを、 import std.stdio; void func(int x){ debug writefln("%s(%d) : x = %d", _caller.fileName, _caller.line, x); return x; } void main(){ func(10); } っていう風に書けたらいいなって思って。 これでは省いたけど、モジュール名とか呼び出し元の関数名とかモジュール名とか 呼び出し元の関数の_callerとかもあるとさらにいいかも? 長文で申し訳ない。
85 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 17:34:10 ] flectionedとか
86 名前:77 mailto:sage [2007/07/23(月) 18:24:49 ] flectionedって、そこまで詳細な情報って得られるの? 呼び出し元のファイル名の取り出し方とか。 軽く見聞きした程度だからどこまでできるかよくわかってないのだけど… でもまぁ、とりあえず標準でそういう機能がほしいところですね…
87 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 18:47:15 ] >>66 // Otsu.new!!(argAlloc)(argCtor) class Otsu{ template New_(aA...){ static typeof(this) New_(TaC...)(TaC aC){ return new(aA) typeof(this)(aC); } } template New(aA...){ alias New_!(aA) New; } int n; this(int n){ this.n = n; } } //任意のクラスに対応できる版 template niw_(T,aA...){ T niw_(TaC...)(TaC aC){ return new(aA) T(aC); } } template niw(T, aA...){ alias niw_!(T,aA) niw; } void main(){ printf("%d\n", Otsu.New!()(3).n); printf("%d\n", niw!(Otsu)(5).n); } とかどうだろう
88 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 20:05:49 ] ヲルターは日曜日にDつくってんのかな
89 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 20:56:51 ] __traitsのallMembersやgetMemberは列挙体にも対応してるのか。 願って止まなかった機能追加キタコレ。
90 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 21:20:17 ] なんで 1.x にはForeachRangeStatementが追加されていないんだああああああああああああああああああああああああ
91 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 21:25:45 ] あわてるな これはヲルターの罠だ
92 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:41:47 ] 更新まだー
93 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 08:27:24 ] >>87 ほおお
94 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 15:06:03 ] >>39 sc.iniが分からないから どうやればいいか分からないですけど 前回のはプロクシの部分で不味かったみたいなので修正 sakuratan.ddo.jp/uploader/source/date45550.lzh @プロクシの有無 A@が有ならプロクシ接続先の入力 B環境変数の登録 のみ確認します
95 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 15:12:51 ] まぁこんなの全然必要無いですけどね…
96 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 16:41:26 ] やっとForeachRangeStatementきたか。 .. 演算子でタプルを作れたら面白そう。 void f(int[] a ...); f(0 .. 2); // == f(0, 1) auto x = [3 .. 6]; // == [3, 4, 5] あんまり使い道なさそうだけど
97 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 17:15:44 ] >>96 template t(T...){ alias T t; } template range(int s, int e){ static if(s<e){ alias t!(s, range!(s+1,e)) range; } else{ alias t!() range; } } import std.stdio; void main(){ writefln((int x,int y){return x+y;}(range!(0,2))); // 1 writefln([range!(3,6)]); // [3,4,5] } とかテンプレートで
98 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 22:09:18 ] ['a' .. 'z'] とかなら使いようもあるかも。
99 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 22:10:02 ] と思ったが、['a' .. 'z' + 1] か。汚いな。
100 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 22:24:32 ] Ruby みたいに .. と ... の使い分けがあれば
101 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 22:50:18 ] しかし今更 .. が末尾を含むことにされても困る
102 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 23:12:39 ] +1でよくねwww
103 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 23:15:32 ] どっちかというと使い分けするほうが俺的にはめんどい だいたい..と...とか似すぎで読み違え頻発wwするかは知らないけど
104 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 00:28:16 ] いまどきキーワードで色分け出来ないエディタを使ってる人は なかなかいないだろうから .. と ... で色を変えりゃいい そういう問題でもないか
105 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 01:24:54 ] 直感的に反するだろうね
106 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 02:28:42 ] === がなくなって is になったときって 間違いやすいから変わったのかな rubyで .. と ... が使われているなら 使い勝手はどうかリサーチしてみればいいんじゃね
107 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 06:23:46 ] VSPluginD アップデートしてくれないかなぁ
108 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 06:25:00 ] What's New for D 1.020 Jul 23, 2007 New/Changed Features Bugs Fixed Fixed extern (System)
109 名前:デフォルトの名無しさん [2007/07/25(水) 07:52:30 ] 久々にみてみたら、更新に古いバグジラ番号のFixが結構多い気がする これはそろそろか・・・?
110 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 13:33:03 ] >>106 ruby 使ってるけど .. と ... でどっちが末尾含むのか毎回混乱してる.