D言語 Part18

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
プログラミング言語 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
3デフォルトの名無しさん:2008/04/14(月) 15:17:57
■関連スレ

D言語なら俺に聞け
http://pc11.2ch.net/test/read.cgi/tech/1108172110/

D言語を広めるスレ
http://pc11.2ch.net/test/read.cgi/tech/1175432606/

D言語は多分コケると思っている人の数→
http://pc11.2ch.net/test/read.cgi/tech/1136288019/

【次世代言語】D言語でOSを作ろう【Monaの移植?】
http://pc11.2ch.net/test/read.cgi/tech/1128794438/

バイナリをゲロる言語の魅力って何?
http://pc11.2ch.net/test/read.cgi/tech/1160869311/

その他リンク
【Java/C/PHP/Perl/Ruby/Python/TeX】Eclipse M22
http://pc11.2ch.net/test/read.cgi/tech/1168166588/

eclipseってそんなに良いか?【エクリプス】
http://pc11.2ch.net/test/read.cgi/tech/1099300344/

統合開発環境Eclipseプラグイン開発QA
http://pc11.2ch.net/test/read.cgi/tech/1081517094/

"Code of the Nerds" Digital Mars C/C++
http://pc11.2ch.net/test/read.cgi/tech/1044210976/
4デフォルトの名無しさん:2008/04/14(月) 18:35:41
1otu
5デフォルトの名無しさん:2008/04/14(月) 20:45:44
おつ
6デフォルトの名無しさん:2008/04/14(月) 21:50:24
res!(1) << '乙';
7デフォルトの名無しさん:2008/04/14(月) 22:17:09
in { assert(otsu >> 1); }
8デフォルトの名無しさん:2008/04/15(火) 00:03:12
invariant 乙
9デフォルトの名無しさん:2008/04/15(火) 00:56:08
enum 乙
10デフォルトの名無しさん:2008/04/15(火) 01:19:53
throw new Otu(">>1");
11デフォルトの名無しさん: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デフォルトの名無しさん:2008/04/15(火) 09:31:07
ちょっと前にstd.slistって無かったっけ。俺の見た幻……?
それはそうと>>1乙。
13デフォルトの名無しさん:2008/04/15(火) 12:55:41
>>12
あったよ
14デフォルトの名無しさん:2008/04/15(火) 17:45:58
>>1
おつゆ
15デフォルトの名無しさん:2008/04/15(火) 23:08:17
(´・ω・` )乙 ←ポニーテール
16デフォルトの名無しさん: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デフォルトの名無しさん:2008/04/16(水) 12:32:03
D言語のネタ来るまで乙禁止
18デフォルトの名無しさん:2008/04/16(水) 17:24:48
Dでデバイスドライバは書けますか?
19デフォルトの名無しさん:2008/04/16(水) 17:37:19
OS書けるんだし書けるんじゃないのかね
20デフォルトの名無しさん: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デフォルトの名無しさん:2008/04/17(木) 11:14:59
乙失敗
22デフォルトの名無しさん:2008/04/18(金) 12:50:17
2.0でmutable/const/invariant周りのエラーを出さずに
一回でコンパイルが通るプログラムを書くことが全然できない件についてorz
複雑すぎるよう
23デフォルトの名無しさん:2008/04/18(金) 13:15:53
直感的じゃないよな
じゃあどうするのかと言われたら困るが
24デフォルトの名無しさん:2008/04/18(金) 16:00:57
駄目言語
25デフォルトの名無しさん:2008/04/18(金) 16:42:16
26デフォルトの名無しさん:2008/04/18(金) 17:04:01
標準ライブラリの関数の引数が
mutable/const/invariantのどれなのか
把握していないといけないのが辛すぎる
関数の引数は全部constでいいんじゃないの?
27デフォルトの名無しさん:2008/04/18(金) 20:23:10
>>26
> mutable/const/invariantのどれなのか
> 把握していないといけないのが辛すぎる

うげぇなんだそれ。作者はユーザインターフェースってもんを一から勉強しろよ
28デフォルトの名無しさん:2008/04/18(金) 21:09:09
間違えればエラーが出るから全く問題ない。
29デフォルトの名無しさん:2008/04/18(金) 21:11:32
というか、もはやphobosまともに保守されてないだろ。
DMDと一緒に配布されてるphobosがコンパイル通らなかったりするし。
30デフォルトの名無しさん:2008/04/18(金) 21:15:35
ここなんのスレだったっけ?
31デフォルトの名無しさん:2008/04/18(金) 22:27:47
>>28
これが信者脳ってやつか
32デフォルトの名無しさん:2008/04/18(金) 22:58:00
>>26
>把握してないと
型のある言語だったら大抵そうじゃね?
const/invariantとか別れてるのはDくらいかもだけど
33デフォルトの名無しさん:2008/04/18(金) 23:21:08
引数の型ぐらいIDEが表示してくれるそれでいいんじゃね。
34デフォルトの名無しさん:2008/04/18(金) 23:21:21
>>32
動的型付け言語も仕様上型のない言語も、不適切な型や値を突っ込めば
実行時にコケるか結果がおかしくなるわけだから、なんにしろ確認は必須だよねえ。

とはいえ、言語の性能ってのはそれ自体の性能だけじゃなくて、実際にはエディタや
周辺環境の性能も関わってくるから、そのへん不足してるせいで>>26ってことなら、
まあD言語(の言語自身か周辺環境)が悪い、といっても間違いじゃないだろうけど。
35デフォルトの名無しさん:2008/04/18(金) 23:22:51
それよりも、参照渡しと値渡しの区別が呼び出し側でつかないのだけはどうにかして欲しい。
3622==26:2008/04/19(土) 00:43:36
>>28 それはひどい

>>29 phobos捨てるべきなのか?

>>33 伝説のIDEがあるならそれで一応満足するのだが

>>32.34 最大の問題は関数の利用者が関数のために
明示的にdeep copyしないといけないところだと思えてきたよ
都合があるのは関数側なのにね
必要なら(.idupの代わりに)関数呼び出し直後に関数内で使う前にdeep copyして欲しい
37デフォルトの名無しさん:2008/04/19(土) 00:54:15
>>31
氏ねよカス(笑)
38デフォルトの名無しさん:2008/04/19(土) 00:58:31
最近の言語は文字列をimmutableな形式で持つことが多くなってきてるよね。
39デフォルトの名無しさん:2008/04/19(土) 01:24:26
std.stringなんかはinvariant(char)[]とconst(char)[]の両方のオーバーロードを提供すればいいんじゃないの。
40デフォルトの名無しさん:2008/04/19(土) 08:00:13
関数の引数ってconst()とrefとinとoutだけでいんじゃね?
41デフォルトの名無しさん:2008/04/19(土) 10:54:42
>>40
いいよな
俺はそうしてる
42デフォルトの名無しさん:2008/04/19(土) 11:43:45
>>40
http://www.kmonos.net/alang/d/2.0/const.html にあるように
エイリアシングの問題があるから、invariant引数は必要なところには
必要だと思う。

だがエイリアシングもクソもなく新しいinvariant文字列を返すような
std.stringの多くの関数にはどう考えても不要だと思う。

string,wstring,dstringの定義がphobosのObjectの項に書いてなかったりするし、
stringをinvariantにしたの忘れてるんじゃないかな。
43デフォルトの名無しさん: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デフォルトの名無しさん:2008/04/19(土) 11:59:57
> もちろん例えばtolowerならinvariantのは定義せず、constだけでいい。

引数をinvariantにすればtolowerは純粋関数になるから、
ある種の最適化ができる可能性があるよね。
そういう意味でこちらもやはり両方定義すべき。
45デフォルトの名無しさん:2008/04/19(土) 12:08:46
>>44
invariantとかconstとかは純粋関数かどうかには関係なくね?
(引数以外の環境に依存せず同じ結果になるから。)
マルチスレッド対応とかはtolowerでやることじゃないだろうし。。
46デフォルトの名無しさん: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デフォルトの名無しさん:2008/04/19(土) 19:57:12
>>43
転送する引数が一つならまだしも複数になったら
自分で転送関数を書くのはやだぞ
48デフォルトの名無しさん:2008/04/19(土) 20:58:02
>>46
プリミティブ型の配列ならそれでもいいけど、
オブジェクトの配列だったりすると何か問題が起こりそうな気が
49デフォルトの名無しさん:2008/04/19(土) 21:23:08
opInvariant()の出番ですね!
50デフォルトの名無しさん: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デフォルトの名無しさん:2008/04/19(土) 22:00:16
>>51
void function()は関数ポインタ型
5351: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デフォルトの名無しさん: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?
5551:2008/04/19(土) 23:21:10
>>52,54
static assert(is(typeof(void function())==function)); //ok
大変勉強になりました。
5651:2008/04/19(土) 23:25:55
↑失敗
void func(){}
static assert(is(typeof(func)==function)); //ok
ありがとうございました。
57デフォルトの名無しさん:2008/04/20(日) 00:30:38
俺も前それで1時間くらい悩んでしまったwww
58デフォルトの名無しさん:2008/04/20(日) 00:35:25
>>57
typeidで確認しろwww
59デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2008/04/20(日) 12:09:27
>>60
いや、よくない。
const(A)[]であるaの参照がどこかにある限り、
a.dupの要素のメンバは変更されうるから、
何らかの方法でAをディープコピーしないといけない。
62デフォルトの名無しさん:2008/04/20(日) 13:43:53
.dupってディープコピーじゃないの?
63デフォルトの名無しさん:2008/04/20(日) 14:04:39
std.contractだかなんだかにあるやつが
結局>>60な感じだったとおもったが
64デフォルトの名無しさん:2008/04/20(日) 14:36:43
>>62
まさか。全く同じ内容の配列を複製するだけだよ。

>>63
assumeUniqueだよね。
これはプログラマの良心によってinvariant性を担保するもので、
>>60のような場合に使うのは不味いね。
65デフォルトの名無しさん:2008/04/20(日) 15:13:19
D言語っていろんな仕様のバージョンがあって、
自分に合ったものを選んで使えば良いときいたんですけど本当ですか?
6660: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);
6760: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));
6860: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;
//}
6960:2008/04/20(日) 16:57:23
opCloneが未定義のときにconst/invariant -> mutable
opInvariantCloneが未定義のときにmutable/const -> invariant
に変換しようとしたときは今までどおりエラーになって
参照型メンバのディープコピー忘れを防止・・・とか

なんていうかGCばんざい
__EOF__
70デフォルトの名無しさん: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に)。
7271:2008/04/23(水) 03:30:19
privateに関しては自己解決した。
お騒がせしました。
73デフォルトの名無しさん:2008/04/24(木) 16:59:42
静かだな
74デフォルトの名無しさん:2008/04/24(木) 17:23:06
そろそろ更新くるんじゃないかな
75デフォルトの名無しさん:2008/04/24(木) 19:50:57
何か難しいことでもしてるのかな
76デフォルトの名無しさん:2008/04/24(木) 21:21:55
いきなり3.0とかかw
77デフォルトの名無しさん:2008/04/24(木) 21:24:42
そして3.1でブレイクだな
78デフォルトの名無しさん:2008/04/24(木) 21:26:22
次は95とかですかね
79デフォルトの名無しさん:2008/04/24(木) 21:30:41
えっ、2095年?
80デフォルトの名無しさん:2008/04/24(木) 21:51:05
3/1に3.1、9/5に95ですね、わかります。
81デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2008/04/25(金) 02:43:05
opDotはalias thisみたいな匂いがするね
85デフォルトの名無しさん:2008/04/25(金) 04:47:03
>>83
switchのcaseはさりげなく面白い変更だな。
同じ動作だが基準がインスタンスごとに変えられるようになるのかな?
86デフォルトの名無しさん:2008/04/25(金) 06:25:57
switchはどうせなら文字列でも出来るほうが面白そうな気がする
87デフォルトの名無しさん:2008/04/25(金) 08:45:43
>>81
気づいてたら教えてくらさい
88デフォルトの名無しさん: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デフォルトの名無しさん:2008/04/25(金) 13:43:07
>>86
switchの条件に文字列指定は前から出来るけど・・・

>C/C++と違い、 文字列もswitch文で使用できます。

って書いてるし。
90デフォルトの名無しさん:2008/04/25(金) 13:47:28
>>89
>>86 はそういう意味じゃないだろ

>>83 の「switchのcaseはconstかinvariantな整数型変数なら定数じゃなくともOK」に対して,「const/invariantな文字列をcase文に使えたら面白い」という話だろ
91デフォルトの名無しさん:2008/04/25(金) 14:21:51
まあ多分こっちの意図と違う事言ってるだろうなと思いつつ勢いに任せて書いた。すまぬ。
92デフォルトの名無しさん:2008/04/27(日) 07:31:21
switch caseのconst変数について。
スタックにあるconstな変数は受け付けますが、
ヒープにある可能性のあるものは全部NGかなという感じです。
関数内(ネスト関数の外側関数含む)でconstな変数は受け付けますが、
クラスフィールド上でconstなものは受け付けません。
93デフォルトの名無しさん:2008/04/27(日) 14:02:04
D面白そうだからやってみたいんだけどオススメの本あったら教えて
英語か日本語の本で
94デフォルトの名無しさん:2008/04/27(日) 14:13:24
他の言語知ってるなら言語仕様のページ見るだけで十分だと思う。
95デフォルトの名無しさん:2008/04/27(日) 14:19:32
>>93
日本語の本で一番新しいのは『D言語パーフェクトガイド』。ただし古くて何の役にも立たない。
英語で最近出たのは『Learn to Tango with D』。まだ読んでないから内容の是非はわからない。
96デフォルトの名無しさん:2008/04/27(日) 14:21:23
D はリアルタイムで言語が大きく変わるから
ついていくには本なんて役に立たない
9793:2008/04/27(日) 14:24:10
learn to tango->ダンスの本かと思ってスキップしてた
amazonで買った
98デフォルトの名無しさん:2008/04/27(日) 15:08:48
Dの本って出版された時点で時代遅れになってそうだな。
99デフォルトの名無しさん:2008/04/27(日) 15:10:25
D 1.0 で止まっていいのなら何とかなりそうではあるが・・・
D 2.0 に興味があるなら本は無駄だと言わざるを得ない
100デフォルトの名無しさん:2008/04/27(日) 15:30:26
opDotって委譲しやすくするって認識でおk?
101デフォルトの名無しさん:2008/04/27(日) 15:31:24
>>100
No.
単一の型にしかforwardできないから何の役に立つのかさっぱり分からない。
102デフォルトの名無しさん:2008/04/27(日) 15:38:18
o.m

o.opDot!("m")
にでもなれば、いろいろ面白そうなのにな。
103デフォルトの名無しさん:2008/04/27(日) 17:24:46
>>102
なんにつかえるかわからんけど、おもしろそう
104デフォルトの名無しさん:2008/04/27(日) 17:26:07
>>102
関数の引数のstaticが来たらopDot("m")でいい気ガス。
105デフォルトの名無しさん:2008/04/27(日) 18:05:18
>>103
ActiveXのレイトバンディングとかに使えるかも。
106デフォルトの名無しさん:2008/04/28(月) 03:29:47
クラス関数を列挙して、それに対応する配列の擬似プロパティ版関数を作るテンプレートってありますか?
下記のような……

class Foo {
void fun(int n);
...
}



void fun(Foo[] foos, int n) {
foreach(foo; foos) fun(n);
}
...
107デフォルトの名無しさん:2008/04/28(月) 18:42:57
作れないことはないと思うけど、すごく汚いものになる気がする
108デフォルトの名無しさん:2008/04/28(月) 19:25:13
__traitsのallMembersやderivedMembersでメンバの名前を得られるから、
それらを関数かどうか判定して、それにあった関数定義を生成して…、
という形になるんじゃないかな。
109デフォルトの名無しさん:2008/04/28(月) 20:29:22
>New/Changed Features
>Hidden methods now get a compile time warning rather than a runtime one.

これうざす。
親クラスの関数をFinalにして回避してるんだけど
そもそもおれのクラスの設計がいけてないってことなのかなぁ・・・
110デフォルトの名無しさん:2008/04/28(月) 22:06:04
>>109
警告メッセージに「オーバーライドしてんのにoverrideついてないよ」
って書いてあるから、素直にoverrideつけりゃいいんじゃなかろうか。
111デフォルトの名無しさん:2008/04/29(火) 06:18:29
>>110
このケースのことじゃなかろうか

class A {
int foo(int a)
}

class B : A {
int foo(int a,int b);
}

名前が一緒で引数の取り方が違う場合
112デフォルトの名無しさん:2008/04/29(火) 17:04:35
>>111
勘違いしてたわ。
なるほどオーバーロードの関係ね。

http://www.kmonos.net/alang/d/2.0/function.html で、
オーバーロードの解決時に基底クラスの関数を含めるにはalias使えとあるから、
class A{
int f(){ return 3; }
}
class B:A{
alias A.f f;
int f(int x){ return x*x;}
}
たぶんこんな感じでOK
113デフォルトの名無しさん:2008/04/29(火) 21:44:13
>>112
わっ本当だ!
ありがとうございます!

aliasの役割っておおいですね・・・
114デフォルトの名無しさん:2008/04/29(火) 23:02:51
使う場面は様々だけどそのスコープの特定の名前セットに
名前を追加するという役割は同じだよ
115デフォルトの名無しさん:2008/04/30(水) 00:53:51
dHell+DMD1.0でゲーム作るの楽しい!!!
/+D言語でハンガリアン記法どうしようか・・・うーむ+/
116デフォルトの名無しさん:2008/04/30(水) 02:28:55
>>115
dHellってdHell2じゃなくて?
無印の方はSDLとほぼ同等だと思ってたが

システムハンガリアンだったらダメ絶対
アプリケーションハンガリアンだったら推奨
http://ameblo.jp/argv/entry-10031517216.html
117デフォルトの名無しさん:2008/04/30(水) 03:01:33
アプリケーションハンガリアンもtypedefがあるからあまり必要無いんじゃない?
118デフォルトの名無しさん:2008/04/30(水) 11:48:18
>>117 え?
119デフォルトの名無しさん:2008/04/30(水) 12:21:11
>>118
Cとかと違って,違う型として扱ってくれるからじゃない?
全て上手く行くかどうか分からないけども
120デフォルトの名無しさん:2008/04/30(水) 14:57:22
データの目的を変数名に入れなくても、typedefで型のほうを目的固有にできるって話じゃね。

ttp://www.radiumsoftware.com/hungarian_notation.html
この例なんかは、安全な文字列型と危険な文字列型を用意すれば解決するようにも思える。
121デフォルトの名無しさん:2008/04/30(水) 17:29:48
>>120のリンク先では「(C++で)いちいちウィンドウ座標とレイアウト座標を
別のクラスにするのは大仰すぎて非現実的だからアプリハンガリアンがいいよね」
と言いたいようだけど,ただ視覚に訴えかけるだけじゃなくて
それぞれを暗黙的に変換されないようにするべきだと思う.

typedefがあるD言語では仕組みは簡単だし
実は同じ型だから変換のコストは安いからもってこい
typedef Point LayoutPoint;
typedef Point WindowPoint;
とか
typedef /*unsafe*/string safeString;
とか.
D言語ではアプリハンガリアンでさえいらず型システムに任せられる気がしてきた
122117:2008/04/30(水) 17:31:07
>>118
すまん言葉足らずだった
>>119-120が言っている通り
なるべくならコンパイルエラーで検出できるようにした方が間違いが無いだろうし
オーバーロードが出来るから処理も分けやすい

全てのケースで置き換えられるとは言わないけど
大体はtypedefが使えると思う
123デフォルトの名無しさん:2008/04/30(水) 17:40:46
文字コード別に文字列型を定義してしまっても良い気がする。
124デフォルトの名無しさん:2008/04/30(水) 18:29:26
>>123 こんなのはしてみたけど
typedef char mbchar;
alias invariant(mbchar)[] mbstring;
文字列同士の連結に ~ じゃなくて連結関数を使わないといけないのがネックだった
125デフォルトの名無しさん:2008/04/30(水) 19:42:24
ただの配列だから~演算子で連結できるだろ
126デフォルトの名無しさん:2008/04/30(水) 19:44:23
>>124
charは既にUTF8って意味を持ってるから、ubyteを基底にするべきだろうね。
127デフォルトの名無しさん:2008/04/30(水) 20:04:38
配列でptrを使わずに&演算子で出てくるのは配列の最初の要素へのポインタと配列の長さを格納した8バイトのデータ?
128デフォルトの名無しさん:2008/04/30(水) 20:21:27
>>125
あ,ゼロ終端の配列にするからいけないのか thx
>>126
間違えた.元々 ubyte にしてました
129デフォルトの名無しさん:2008/04/30(水) 20:25:35
>>127
&演算子が返すのは、配列の参照が保持されている場所のアドレスか、
配列の先頭の要素のアドレス。動的か静的かで挙動が異なる。
130デフォルトの名無しさん:2008/04/30(水) 21:15:10
>>116
すまん、dHell2の方だった
アプリケーションハンガリアンってあるのか・・・
システムハンガリアンしか知らなかった・・・thx!!
131デフォルトの名無しさん:2008/04/30(水) 21:59:30
>>114
なるほど
132デフォルトの名無しさん:2008/04/30(水) 22:43:31
>>122
なるほど、得心しました。
単純にアプリケーションハンガリアンはレビュアーの為でもあるんでそっちまで否定されてるのかと思い込んでました。
133デフォルトの名無しさん:2008/05/01(木) 07:09:09
>>124
文字列型はinvariant(char)[]でもう確定なのかな
せめて一段aliasがあればな…

ていうかWindowsでUTF8が(ry
134デフォルトの名無しさん:2008/05/01(木) 10:37:10
ところで、charがUTF-8の文字という意味を持っているなら、
なんで、toMBSzとかはchar*を返すんだ?
ubyte*を返すべきなんじゃないか?
135デフォルトの名無しさん:2008/05/01(木) 13:11:56
まったくその通りだと思います
136デフォルトの名無しさん:2008/05/01(木) 15:05:51
D はじめますた。
winxp で eclipse + descent + dmd 1.028 + dsss 最新版 + ddbg 最新版で
なんとかコーディング → ビルド → デバッガが走るという、IDE の最低限要素を実現出来たばっかり。

で、
import std.stdio;
void main() {
 printf("test");
 printf("hello, D");  // この行にブレークポイント
}
このコードでブレークポイントの部分で止まったときに
eclipse のコンソールに、標準出力に出力されたであろう test って文字列が出てこない。
出てこさせる方法は無いですか?
137デフォルトの名無しさん:2008/05/01(木) 15:22:47
fflush(stdout);
138デフォルトの名無しさん:2008/05/01(木) 15:26:06
>>136-137
std.stdio.flushall();
てのなかったっけ
139デフォルトの名無しさん:2008/05/01(木) 15:32:06
>137
>138
出てこないみたいです。
140デフォルトの名無しさん:2008/05/01(木) 16:49:44
あーーーわかりますた。

標準出力用のコンソールが、eclipse の外のウィンドウで出てたです。
気がつかなかったー。
141デフォルトの名無しさん:2008/05/01(木) 17:36:59
ワラタ
142デフォルトの名無しさん:2008/05/01(木) 20:25:08
>>136
その実現する過程をぜひ教えてほしい・・・
143デフォルトの名無しさん:2008/05/01(木) 22:28:47
eclipse は元から入ってました。

で、descent を入れました。
http://eclipsewiki.net/eclipse/?D%B8%C0%B8%EC%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3

コンパイラが別途必要なのを気がつかなくて入れてなかったので、
あとから dmd と dmc をいれました。ふつうはルートに展開するらしいけど、ルートが嫌だったので、c:\d に展開。
->c:\d\dmd
->c:\d\dm
dsss を入れます。
->c:\d\dsss
ddbg を入れます。
->c:\d\ddbg

パスを設定します。
DMD_HOME=c:\d
PATH=〜〜〜〜;%DMD_HOME%\dmd\bin;%DMD_HOME%\dm\bin;%DMD_HOME%\dsss\bin;%DMD_HOME%ddbg\bin;

コンパイラの設定。
eclipse で ウィンドウ>設定 を開いて、ツリーから、D -> Installed Compilers を選択
追加を押して、Compiler home directory に、dmd を展開したディレクトリ(c:\d\dmd) を設定
すると、他の情報もなんだか良い感じに設定されているので、おもむろに OK

デバッガの設定
http://www.dsource.org/projects/descent/wiki/DebuggingPrograms
144デフォルトの名無しさん:2008/05/01(木) 22:38:59
ビルダーの設定
D のプロジェクトのプロパティを開いて、ツリーから ビルダーを選択
新規ボタンを押して、プログラムを選択して、OK
メインタブーーーーーーーーーーーー
ロケーション:c:\d\dsss\bin\dsss.exe
作業ディレクトリ:${project_loc}
引数: build
更新タブーーーーーーーーー
完了時にリソースを更新をチェック
選択されたりソースを含むプロジェクトを選択
再帰的にサブフォルダーを組み込むをチェック
おもむろに OK

dsss のコンフィグ
D のプロジェクトのディレクトリに、dsss.conf を作成。
[main.d]                   // ← main() を含むソースファイル
buildflags=-g -Isrc\\   // ← コンパイラに渡すオプション


だいたい、こんなかんじです。
145デフォルトの名無しさん:2008/05/01(木) 23:44:39
乙です
146デフォルトの名無しさん:2008/05/02(金) 06:26:21
>>143-144
うわ、ありがとう!!
147デフォルトの名無しさん:2008/05/02(金) 18:23:04
Descent ver あがってるね。
148デフォルトの名無しさん:2008/05/02(金) 19:33:18
型タプルの各型の文字列表現が欲しいんだが可能でしたっけ?
149デフォルトの名無しさん:2008/05/02(金) 20:10:02
stringof プロパティを使えば出来るかと
ttp://www.kmonos.net/alang/d/2.0/property.html

動作例 これでいいのかな?
ttp://codepad.org/7jPFcZXj
150デフォルトの名無しさん:2008/05/02(金) 21:44:48
>>148じゃないけど…おれもちょっとそれは悩んでたことがある。結局あきらめたけど。
>>149
ttp://codepad.org/JLIVZDYF
こんな感じに、モジュール名まで考えたときに stringof だと都合が悪いんだよね…
mangleof と demangle でいけないかと思ったけど、これもなんかうまくいかないし…
どうすればいいんだろう?
151デフォルトの名無しさん:2008/05/02(金) 23:24:11
1.0から0.2を5回引いても0にならないのはどうにかならないんでしょうか・・・。
152デフォルトの名無しさん:2008/05/02(金) 23:37:42
面倒でも整数で
153149:2008/05/02(金) 23:40:14
>>150
うーん、確かに半端だ…
.NET Framework の Type.Fullname プロパティ相当のものが
現在のD言語には用意されていないようなのが不味いのかな。
154デフォルトの名無しさん:2008/05/03(土) 00:19:06
>>151
浮動小数点数がどういうものかを勉強しろ。
155デフォルトの名無しさん:2008/05/03(土) 00:33:29
Dの浮動小数点数ってずいぶん貧弱なんですね
156デフォルトの名無しさん:2008/05/03(土) 00:37:58
>>148
stringof はタプルに対しても使える。
モジュール名は実行時でも良いなら typeid で取れるね。
157デフォルトの名無しさん:2008/05/03(土) 01:16:37
>>155
Dの・・・?
158デフォルトの名無しさん:2008/05/03(土) 01:24:55
あちこちで春ですよ
159デフォルトの名無しさん:2008/05/03(土) 01:36:59
さすがに>>155には失笑した
160デフォルトの名無しさん:2008/05/03(土) 01:48:20
>>155はとりあえず基本情報処理技術者の資格を取ってきなさい
161デフォルトの名無しさん:2008/05/03(土) 01:51:09
>>155
今まで使ってきた言語を示すべし
162デフォルトの名無しさん:2008/05/03(土) 02:25:19
PythonのDecimalみたいなのがあれば良いんじゃない
163デフォルトの名無しさん:2008/05/03(土) 02:51:49
>>162
Decimalはライブラリ(というかモジュール?)だから組み込みどうしではPythonも同じじゃない?
標準で入れるべき,となるとまた別な問題な気がするけど,dsourceとかにあるのかなぁ
164デフォルトの名無しさん:2008/05/03(土) 10:30:41
Dの10進浮動小数点数ライブラリはまだ見たことはないな
まあ、欲しい奴が移植すればいいだろう
165デフォルトの名無しさん:2008/05/03(土) 15:22:40
>>155はMatlabとかMathematicaとか使ってたんだろ。
166デフォルトの名無しさん:2008/05/03(土) 15:37:18
C#は1.0から128bitDecimal型標準装備だな
167デフォルトの名無しさん:2008/05/04(日) 09:46:12
>>143-144に刺激されて、Eclipse&Dscentいれてみたが、
VSのMakeプロジェクト、asm{ int 3;} に慣れすぎていた自分がいた・・・
168デフォルトの名無しさん:2008/05/05(月) 01:02:20
仕様で見つけられないので質問です。(1.0 の仕様しか見てませんけど)

クラスメンバーのアクセス制限属性(private とか protected とか)は、
記述したらそのアクセス制限が適用されるのはわかるのですが
記述しなかった場合、どのアクセス制限が適用されるのかご存じのかた居ませんか?

とりあえず試した限りでは public っぽいのですが・・・。
169デフォルトの名無しさん:2008/05/05(月) 01:23:20
http://www.kmonos.net/alang/d/2.0/struct.html
デフォルト publicだよ
170デフォルトの名無しさん:2008/05/05(月) 01:25:48
あ、ごめん2.0のURL出しちゃったけど1.0系でも同じだよ
171デフォルトの名無しさん:2008/05/05(月) 01:43:51
・・・これで判れというのもなかなかシビアなものがある。>DigitalMars

どもありがとうございました〜
172デフォルトの名無しさん:2008/05/05(月) 08:12:45
>>これで判れ
Dは初心者向けじゃなくて今までの言語との比較が基本だから仕方ない気もしてたり
173デフォルトの名無しさん:2008/05/06(火) 00:46:47
poseidonがなんか少し新しくなってる
174デフォルトの名無しさん:2008/05/06(火) 01:35:34
175デフォルトの名無しさん:2008/05/06(火) 01:38:46
176デフォルトの名無しさん:2008/05/06(火) 04:51:01
>>149
ありがとうございました。
おかげさまで>106もどきができたのですが、
長いのでここに貼るのはどうかなという感じのものです。
codepadはたぶんコンパイラのバージョンの違いで通りませんでした。
177デフォルトの名無しさん:2008/05/06(火) 20:37:53
dflのListViewってハンドル取れないようになってないかい?
178デフォルトの名無しさん:2008/05/08(木) 09:39:00
ハンドルって何のこと
179デフォルトの名無しさん:2008/05/08(木) 12:09:55
キャンドル♪ハンドル♪ペダルにサドルに自♪転♪車♪漕いどる♪
180デフォルトの名無しさん:2008/05/08(木) 17:44:31
Windows的にいえば、Windowハンドルじゃないかい?

しかし、懐かしいもんひっぱってきたねぇ。>>自転車
意味的にはハンドルはどっちも同じだったと思うけど。
181デフォルトの名無しさん:2008/05/08(木) 18:50:38
デバイスコンテキストハンドル
182デフォルトの名無しさん:2008/05/08(木) 19:10:34
久しぶりにdflのサイト覗いてみたけど、3月中旬にD2対応してたんだね。
そろそろD2に移行しようかな
ttp://wiki.dprogramming.com/Dfl/Snapshots
183デフォルトの名無しさん:2008/05/08(木) 21:04:49
>>182
あれ?どうやったらD2で使えるんですか?
184デフォルトの名無しさん:2008/05/08(木) 21:26:32
ttp://wiki.dprogramming.com/Dfl/D2-0
まだ対応してないとも書いてるけど
185デフォルトの名無しさん:2008/05/08(木) 22:01:43
うちの環境がおかしいだけでできるみたいです
186デフォルトの名無しさん:2008/05/08(木) 22:32:15
インストールして普通に動いたよ@v2.013

>>184
スナップショットのほうで対応してるってことかと。
187デフォルトの名無しさん:2008/05/08(木) 23:09:11
なんでpathが通ってないのにdfl.exeは
c:\d2\dmd\bin\dmd.exeじゃなくて
c:\d\dmd\bin\dmd.exeの方を使おうとしてくれるのだろうか orz
c:\d を c:\_d に改名したら普通に動くのに・・・
どこかに設定が残っているのでしょう?
188デフォルトの名無しさん:2008/05/08(木) 23:15:56
多分わかった
両方のバージョンを入れていて競合する人はdfl.exeを使う前に
dfl -i
を実行してやればいいみたいだ
189デフォルトの名無しさん:2008/05/09(金) 00:29:43
>>179
会いに来て荒♪井♪注♪
190デフォルトの名無しさん:2008/05/09(金) 07:28:43
DFLでつかえるコントロール一覧のスクリーンショットってなかったっけ
191デフォルトの名無しさん:2008/05/09(金) 16:24:34
192デフォルトの名無しさん:2008/05/09(金) 22:01:09
dmd1.029
class Test
{
int[string] x;
void a(Test* t){assert("hello" in t.x);}
Test* b(){return &this;}
}

void main()
{
Test t = new Test();
t.x["hello"]=1;
t.a(t.b); // Error: Access Violation
}

ナゼ?
193デフォルトの名無しさん:2008/05/10(土) 00:48:28
Test#b はローカル変数のアドレスを返してるようなもんだと思うんだけど
194192:2008/05/10(土) 01:38:42
>>193
確かにTest#bを
Test* b()
{
static Test c;
c = this;
return &c;
}
にすると解決
ただ、なんとなくいまいち泣希ガス
意図としては関数bには&tを返してほしいんだが、そういうのはワガママ?
195デフォルトの名無しさん:2008/05/10(土) 01:49:12
そんなの無理だろ。
オブジェクトを値渡ししてるのに
196デフォルトの名無しさん:2008/05/10(土) 01:54:47
もともと参照だしそれって意味あるの?
197192:2008/05/10(土) 02:18:39
ああ、そういえばそうか。
根本的なことわすれてるなおれ。

別方法で打開しました。おさわがせ。
198デフォルトの名無しさん:2008/05/10(土) 02:55:09
class Test
{
int[string] x;
void a(Test t){assert("hello" in t.x);}
Test b(){return this;}
}

void main()
{
Test t = new Test();
t.x["hello"]=1;
t.a(t.b);
}

これじゃ駄目だったの?
199デフォルトの名無しさん:2008/05/10(土) 03:51:49
C++使ってたから俺も混乱した
200デフォルトの名無しさん:2008/05/10(土) 19:35:18
Dも、C#みたいに型省略宣言入れてくれよ。
201デフォルトの名無しさん:2008/05/10(土) 19:36:25
autoで我慢しなせぇ。
202デフォルトの名無しさん:2008/05/10(土) 22:11:02
>>200 どんなの?
203デフォルトの名無しさん:2008/05/10(土) 22:19:29
匿名型のことかな
204202:2008/05/10(土) 22:45:05
これか?
void main(){
    auto x = new class {int a; string b;};
    x.a = 1;
    x.b = "hoge";
}
205デフォルトの名無しさん:2008/05/10(土) 22:56:52
auto x = new class {int a; string b;};
auto y = new class {int a; string b;};

Dだとxとyが同じ型にならないのがだめだな。
206202:2008/05/10(土) 22:59:05
まあそういう仕様だわなあ
同じ型がいい理由ってどんなんがあるの?
207デフォルトの名無しさん:2008/05/10(土) 23:00:45
ん・・・あれ?
行頭のスペースが残ってる
for(;;){
    writefln();
}
208デフォルトの名無しさん:2008/05/10(土) 23:05:14
>>206
配列に突っ込みたいときとか
209デフォルトの名無しさん:2008/05/10(土) 23:31:08
てs
210デフォルトの名無しさん:2008/05/11(日) 05:34:08
  だろ?
211デフォルトの名無しさん:2008/05/11(日) 08:00:40
うーんLINQみたいな応用があれば
匿名型は有意義なんだろうけど今のままならあんまりかなあ
匿名型のTupleを可変長テンプレートの引数に与えるとかで代用できないのか
212デフォルトの名無しさん:2008/05/11(日) 11:00:31
>>191
ありがとう〜
213デフォルトの名無しさん:2008/05/12(月) 08:33:31
連想配列asにキーkeyのものがあるかどうかを調べて、
なければ作成する
auto p= key in as;
if( p is null ) {
 as[key]= A()
 p= key in as;
}
っていうのがめんどくさいので、過去スレ参考にして以下みたいなのを
つくってみた
template key_type(T)
{
 static if(is(T A:U[A],U)) { alias A key_type;}
}

template return_type(T)
{
 static if(is(T A:U[A],U)) { alias U return_type; }
}

return_type!(T)* has(T)( ref T as, key_type!(T) key)
{
 auto p= key in as;
 if( p !is null ) return p;
 static if( is(return_type!(T):Object) ) {
  as[key]= new return_type!(T)();
 } else {
  as[key]= return_type!(T)();
 }
 return key in as;
}
214213:2008/05/12(月) 20:41:00
auto p= has( as, key)
p.MEMBER= VALUE;
って感じです。
こうやったほうがいいぜ、とかご意見ありましたらm(_ _)m
215デフォルトの名無しさん:2008/05/12(月) 20:42:16
V* has(K, V)( ref V[k] as, K key)

とかじゃあかんの。
216213:2008/05/12(月) 23:46:32
がーーーーん
217デフォルトの名無しさん:2008/05/12(月) 23:54:09
配列は参照型だからrefである必要もないな。
218213:2008/05/13(火) 08:30:21
>>215,217
さらしてみるもんですね・・
ありがとうございます
219デフォルトの名無しさん:2008/05/13(火) 20:33:38
DBIに
private import tango.stdc.stringz : toDString = fromUtf8z, toCString = toUtf8z;
というコードがあるんですが、
これってどう修正すれば動くんでしょう?
220デフォルトの名無しさん:2008/05/13(火) 20:56:43
こうかな?
private import tango.stdc.stringz : toDString = fromStringz, toCString = toStringz;

参考:
http://dsource.org/projects/tango/docs/current/tango.stdc.stringz.html
http://www.kmonos.net/alang/d/2.0/module.html
221デフォルトの名無しさん:2008/05/13(火) 21:30:45
>>220
ありがとうございます。
222デフォルトの名無しさん:2008/05/13(火) 21:42:04
dでSqliteを使おうと思っています。
http://www.digitalmars.com/download/freecompiler.html
でImplibを使ってLibファイルを作り、
pragma (lib, "sqlite3.lib");
extern (C):
int sqlite3_open (char* filename, sqlite3** database);
int sqlite3_close(sqlite3* database);
として関数を使ってみたんですが、Undefined Symbolと出てしまいます。

何か足りないものか間違ってる所があるんでしょうか?
223デフォルトの名無しさん:2008/05/13(火) 22:17:29
sqlite3
224デフォルトの名無しさん:2008/05/13(火) 23:06:23
小文字を大文字にするテンプレートを書いてみたんだけど

ttp://codepad.org/Ola6Mjkq
こう書くより、

ttp://codepad.org/kEF07sfw
と、末尾再帰の形にしたほうがいいのかな?

コンパイル時に末尾最適化がかかるとは思ってないけども、
文字列が長くなったときに影響あるかな…と思いまして。
225デフォルトの名無しさん:2008/05/13(火) 23:09:58
>>224
関数にすれば良くね?
226デフォルトの名無しさん:2008/05/13(火) 23:29:12
>>225と同じく関数でいい気がする。
適当にコンパイル時に実行できるようにしてみた。
string toUpper(string src){
if(src.length == 0)return "";
foreach(i,c;src){
if('a'<=c && c<='z'){
string result = src[0..i];
foreach(d;src[i..$])
result ~= ('a'<=d&&d<='z' ? d-'a'+'A' : d);
return result;
}
}
return src;
}
void main(){
const static x = toUpper(null);
printf("%.*s\n",x);
}
227224:2008/05/13(火) 23:48:25
>>224 >>225
コンパイル時に実行できる関数がうまく作れなかったのでテンプレートにしたんだけど
関数で書けるのなら関数のほうがいいですね。参考になりました。ありがとう。
228デフォルトの名無しさん:2008/05/14(水) 00:20:18
>222
ポエニーのソースを見ると良いよ。sqlite3 をつかってたはず
229デフォルトの名無しさん:2008/05/14(水) 04:01:35
>>228
ありがとうございす。
ソースの中にあった、dllとLibファイルを入れ替えたら動きました・・・。
Libファイルの作り方が悪かったようです。
230デフォルトの名無しさん:2008/05/14(水) 07:12:25
ひさしぶりにDさわったら、ずいぶんましになってんのな
前はコンパイラがすっこんすっこん落ちてた
231デフォルトの名無しさん:2008/05/14(水) 10:11:13
void foo() {
void bar(...) {
}
}

これをdmd_2.012-030708_i386.debでコンパイルするとSegmentation faultが出る
232デフォルトの名無しさん:2008/05/14(水) 14:22:02
可変引数(?)の...をその関数内の...を受ける関数に渡す場合ってどうすればいいんでしょうか?
233デフォルトの名無しさん:2008/05/14(水) 16:00:42
タプルでいいならこれでおkかな?
void foo(T...)(T a){
void bar(U...)(U b){writefln(b);}
bar(a);
}
234デフォルトの名無しさん:2008/05/14(水) 19:58:22
>>232
Cスタイルならva_listをとる関数を別途用意するしかない。
Dスタイルなら配列で受けて配列のまま渡せばいい。
可変長引数タプルなら>>233。これが汎用性は一番高い。
235デフォルトの名無しさん:2008/05/14(水) 23:04:12
dmd1.029+
dsource.orgのWindowsAPI bindings+
わなDさんから頂いたcoffimplibでPlatformSDKから作ったlib

でWM_IME_CHARがこないんだ、がみんなどうよ?
236デフォルトの名無しさん:2008/05/15(木) 13:13:07
Error: no property 'hogefunc' for type 'hoge.Hoge'
これはどういう意味なんでしょう。
関数は定義されてるはずなんですが。
237デフォルトの名無しさん:2008/05/15(木) 13:14:28
思いっきり勘違いでした。
定義されてない関数でした。
238デフォルトの名無しさん:2008/05/15(木) 16:21:34
>>235 それをパッと実験できる準備ができてる人はあんまりいないと思う
239デフォルトの名無しさん:2008/05/16(金) 01:32:39
文字列の連想配列って
char[char[]][]
じゃエラーになるんですが、どういう風に宣言すればいいんでしょう?
240デフォルトの名無しさん:2008/05/16(金) 01:42:54
string[string]
241デフォルトの名無しさん:2008/05/16(金) 03:03:20
char[][char[]]
242デフォルトの名無しさん:2008/05/16(金) 16:07:18
>>239
それじゃ文字の連想配列の配列じゃね
243デフォルトの名無しさん:2008/05/16(金) 20:47:04
dでリフレクションな事ってできませんかね。
アクション呼ぶのにSwtich文つらつら書いてるのがあれなんですが。
244デフォルトの名無しさん:2008/05/16(金) 21:43:46
1.reflection.dを使う
2.BOFの発表であったいずれ来るかもしれないライブラリを待つ
3.自分で作る
のどれかかな
245デフォルトの名無しさん:2008/05/17(土) 06:44:20
>>241
>>242
動きました。
ありがとうございました。
246デフォルトの名無しさん:2008/05/17(土) 11:56:07
と思ったら動いてませんでした。
["hoge":"omg","test":"sod"];
こういう配列を受け入れる変数はどういう宣言が必要なんでしょうか。
247デフォルトの名無しさん:2008/05/17(土) 11:59:31
string[string] aa = ["hoge"[]:"omg"[],"test":"sod"];
248デフォルトの名無しさん:2008/05/17(土) 13:23:02
あぁ、すごい勘違いですた。
~=じゃなくてそのまま=で入れられるんですた。
249デフォルトの名無しさん:2008/05/17(土) 16:19:03
Version D 2.014 May 16, 2008
New/Changed Features
Added -man switch to browse manual.
Added -lib switch to generate library files. Also causes multiple object files to be generated from one source module.
When generating an executable file, only one object file is now generated containing all the modules that were compiled, rather than one object file per module.
Rewrote the rdmd utility to properly track dependencies and command-line compiler options (currently only working under Linux).
Changed the Phobos makefile linux.mak to take advantage of the new -lib feature. Improved full build speed by 3x.
std.algorithm: Changed the map() function so that it deduces the return type. Also map can be now curried.
std.contracts: Added file and line information to enforce. Added errnoEnforce that formats the error message according to errno. Added corresponding ErrnoException class.
std.conv: Made std.to curryable. Changed std.to to throw exception when object-to-object cast fails. Eliminated some superfluous printfs.
250デフォルトの名無しさん:2008/05/17(土) 16:19:48
std.encoding: Added new functions encodedLength(dchar) and encode(dchar, ref E[])
std.encoding: Got rid of types Utf8, Utf16, Utf32, Ascii, Latin1, Windows1252. Introduced types AsciiChar, AsciiString, Latin1Char, Latin1String, Windows1252Char, Windows1252String.
std.encoding: For now commented out std.encoding.to.
std.file: Changed Boolean function signatures (e.g. exists) to return bool instead of int. Got rid of some gotos. Added the readText, lastModified, mkdirRecurse, and rmdirRecurse functions.
std.functional: Improved compose so it accepts an unbounded number of functions. Added the pipe function.
std.getopt: Added new option stopOnFirstNonOption. Also automatically expand dubious option groups with embedded spaces in them (useful for shebang scripts)
std.math: improved integral powers
std.md5: Improved signature of sum so it takes multiple arrays. Added getDigestString.
251デフォルトの名無しさん:2008/05/17(土) 16:20:09
std.path: changed signatures of test functions from bool to int. Implemented rel2abs for Windows. Improved join so that it accepts multiple paths. Got rid of some gotos with the help of scope statements.
std.process: added getenv and setenv. Improved system() so it returns the exit code correctly on Linux.
std.random: added the dice function - a handy (possibly biased) dice.
std.typecons: Finalized and documented the stupendous Rebindable template.
std.utf: added the codeLength function. Got rid of some gotos.
Bugs Fixed
std.format: Fixed unlisted bug in raw write for arrays
std.getopt: Fixed unlisted bug in dealing with one-letter options with bundling disabled
252デフォルトの名無しさん:2008/05/17(土) 16:22:26
Bugs Fixed
std.format: Fixed unlisted bug in raw write for arrays
std.getopt: Fixed unlisted bug in dealing with one-letter options with bundling disabled
Bugzilla 2014: fopen fails on large files.
Bugzilla 2031: Documentation: template value parameters
Bugzilla 2032: Documentation for creating a class on the stack is unintuitive
Bugzilla 2037: Article on hijacking is outdated
Bugzilla 2038: Remove hello2.html from samples directory
Bugzilla 2039: -ignore switch is missing from compiler docs
Bugzilla 2054: Const system broken on struct assignment.
Bugzilla 2055: (ICE) Compiler crash on struct initializer with too many elements
Bugzilla 2056: Const system does not allow certain safe casts/conversions involving deep composite types
Bugzilla 2058: Describe hidden value passed to class member functions
Bugzilla 2063: std.xml access violation for nested, closed tags
Bugzilla 2065: Return value of std.file.exists() is inverted.
253デフォルトの名無しさん:2008/05/17(土) 16:23:12
Bugzilla 2067: call from anonymous class makes access violation.
Bugzilla 2071: spec doesn't mention pointer arithmetic with two pointer operands
Bugzilla 2072: std.typecons documentation anomaly.
Bugzilla 2074: Variant arithmetic operations fail. For now the fix is to comment out all right-hand side operators. Suggestions for a better fix are welcome.
Bugzilla 2075: Spec does not specify how array literals are stored.
Bugzilla 2084: operator ?: does not compute the tightest type
Bugzilla 2086: Describe relationship between string and char[] more explicitly
Bugzilla 2089: Issues with CTFE and tuple indexes
Bugzilla 2090: Cannot alias a tuple member which is a template instance
Bugzilla 2100: Assertion failure: '0' on line 4842 in file 'expression.c'
Bugzilla 2109: asm {lea EAX, [0*0+EAX]; } rejected.

-EOF-
254デフォルトの名無しさん:2008/05/17(土) 16:40:48
1) ユーティリティとしてのdmdの使い勝手の向上
2) phobosの改善
3) バグ修正

といったところか
255デフォルトの名無しさん:2008/05/17(土) 18:27:42
関数ごとに.objを分けるみたいな機能で、リンク速度が向上して、サイズは小さくなるのかな。
256デフォルトの名無しさん:2008/05/17(土) 23:22:30
最近、64bitのLinux環境でD言語を使い始めたんですけど、
gdcって、もう開発停止してるんですか?
メンテもされてないコンパイラを使うのは少し気が引けます。
257デフォルトの名無しさん:2008/05/17(土) 23:27:20
ペース遅いけど今も開発されてるよ。
258デフォルトの名無しさん:2008/05/17(土) 23:29:12
開発は停止してないようだがリリース間隔はお世辞にも早いとはいえない
259デフォルトの名無しさん:2008/05/17(土) 23:34:46
早くコミット権限を貰いに行って最新版DMDに対応させる作業にかかるんだ!
260256:2008/05/17(土) 23:45:48
>>257,258
レスありがとうございます。
sourceforge見てもわからなかったので、困ってました。
とりあえずgdcを使っていこうと思います。
261デフォルトの名無しさん:2008/05/17(土) 23:47:03
win32版dmd1.028で連想配列の動的配列のlengthを設定しようとすると
固まるんだけど、誰か分かりませんか?

こんなの

int main() {
 int[int][] a;
 a.length = 5;
 return 0;
}
262デフォルトの名無しさん:2008/05/18(日) 00:25:43
>>261
ほんとだ。これでも固まる(実行時)。

void main()
{
typedef int[int] intint;
intint[] a = new intint[5];
}
263デフォルトの名無しさん:2008/05/18(日) 00:47:15
シャアw
264デフォルトの名無しさん:2008/05/18(日) 04:04:55
>>261
それはずっと前からバージョン関係なく止まる。
効率良くはないが、俺はループさせてnullで埋めたりしてた。
265デフォルトの名無しさん:2008/05/18(日) 08:36:52
266デフォルトの名無しさん:2008/05/18(日) 16:45:27
std.bindいじってたらdmd落ちた・・・
どこが原因かわかんね
267デフォルトの名無しさん:2008/05/18(日) 17:30:22
2.014 std.xmlがうまくうごかなくなった・・
onStartTag内で、attrがからっぽ
268デフォルトの名無しさん:2008/05/19(月) 03:50:56
質問なんですが、一度設定したらそれ以降不変なメンバの初期化をコンストラクタに
与えられた値を使って行いたいです。D言語だとinvariantなメンバの初期化はどうやって
行うのでしょうか。
269デフォルトの名無しさん:2008/05/19(月) 04:56:06
以下のようにコンストラクタ内で初期化すればいいんじゃないの?

class Foo
{
invariant int bar_;

this(int bar)
{
bar_ = bar;
}

void bar(int baz)
{
//bar_ = baz; コメント外すとError: can only initialize const member bar_ inside constructor
}
}
270デフォルトの名無しさん:2008/05/19(月) 08:19:55
DはC++と違ってメンバ初期化子ないもんね
271デフォルトの名無しさん:2008/05/19(月) 08:25:55
参照型のクラスにはいらないし
値型の構造体にはコンストラクタが定義できない
無駄なインスタンスが作られないからメンバ初期化子はいらないわけか
272デフォルトの名無しさん:2008/05/19(月) 08:56:39
誰かstd.encodingについて3行でまとめてくれ
273デフォルトの名無しさん:2008/05/19(月) 09:12:33
切り捨てなきゃ無理
274デフォルトの名無しさん:2008/05/19(月) 14:09:25
文字列エンコーディングに関する標準が出来た感じ?
encodingのドキュメントぱっと見たけど、シグニチャがGeneric過ぎて使い方がすぐイメージできんw
あとEncodingSchemeASCIIとかのクラス名はASCIIEncodingSchemeのほうが良くないか。
語順がなんか気持ち悪い。

ともあれ、これにEncodingStreamと、ICUEncodingSchemeとかを加えてやれば、
Javaや.NET並のエンコーディング処理能力が得られるのかな。
275デフォルトの名無しさん:2008/05/19(月) 17:28:28
>Javaや.NET並のエンコーディング処理能力が得られるのかな。
それはいいな
276デフォルトの名無しさん:2008/05/20(火) 03:00:00
int hoge();
void hoge(int v);
で、hoge っていうプロパティになるらしいけど、
hoge++;
って出来ないのは何とかならないですか?
DMD 1.028 です。
277デフォルトの名無しさん:2008/05/20(火) 03:14:21
なんともなりまへん。
278デフォルトの名無しさん:2008/05/20(火) 06:16:40
ニュースグループで、ウォルたんにお願いしてみるしか。
気が向いたら、やってくれるかも。
279デフォルトの名無しさん:2008/05/20(火) 07:34:51
+=もだめだっけ。結構前から「いつかやる予定」ってどっかに書いてなかった?
280デフォルトの名無しさん:2008/05/20(火) 16:09:15
「いつかやる予定」=「めどいからやらない」
281デフォルトの名無しさん:2008/05/20(火) 17:00:58
時の流れが、少ないコードで何も崩さずそれを追加できるよう状況を整理するのを待ってるわけか。

いや、「いつの間にか必要無くなってる」というのを待ってるのかもw
282デフォルトの名無しさん:2008/05/20(火) 17:52:35
コンパイラのソースが公開されてるんだから
自分たちでやるっつーのは?
283デフォルトの名無しさん:2008/05/20(火) 18:03:47
言語として互換性を損なうと、それこそ意味がない。
284デフォルトの名無しさん:2008/05/20(火) 19:13:40
>>280
今やらねばいつできる -> 今やらねばいつかできる
俺がやらねば誰がやる -> 俺がやらねば誰かやる
285デフォルトの名無しさん:2008/05/20(火) 19:27:13
という
286デフォルトの名無しさん:2008/05/22(木) 09:46:31
win32.windowsとかdflとか2.0対応のライブラリが
増えてきていい感じに使えるようになってきたね
287デフォルトの名無しさん:2008/05/22(木) 13:59:29
あとはTango?
統合されないのかなぁ・・・
ひろいとはいえないDの世界で基本ライブラリが
2つ開発されているのはなんとももったいない
288デフォルトの名無しさん:2008/05/22(木) 14:47:57
walたんがそのうち統合されるんじゃねwww
みたいなこと言ってなかったっけか
289デフォルトの名無しさん:2008/05/22(木) 16:25:44
BOFの時の質問にそんなんがあったな。
やっぱり「そのうち統合されるんじゃない?」みたいな感じだった気が。
今のところ統合する気はないってことだよね。
290デフォルトの名無しさん:2008/05/22(木) 18:00:18
タンゴボスは駄目なのかい
291デフォルトの名無しさん:2008/05/22(木) 23:05:11
名前からしてダメダメオーラが
292デフォルトの名無しさん:2008/05/22(木) 23:06:38
ウォルたんのギャグセンスは微妙w
293デフォルトの名無しさん:2008/05/23(金) 12:32:39
しかし0.1ショックは面白かった
294デフォルトの名無しさん:2008/05/23(金) 16:03:12
Tangoも…
295デフォルトの名無しさん:2008/05/23(金) 23:45:02
import std.variant;
import std.stdio;
import std.string;
alias Variant var;

int[var] dic;
dic[var("aaaa")]= 10;
writeln( dic[var("aaaa")] );

あれ〜これってだめなのかな
writelnで即落ちします・・・
296デフォルトの名無しさん:2008/05/23(金) 23:47:22
VariantのopEqualsの実装がどうなってるのか確認したほうがよさげ。
297デフォルトの名無しさん:2008/05/24(土) 00:43:03
機能から複数のファイルに分けられたユーティリティ関数を
同じ名前空間みたいな感じでアクセス( Util.hoge() って感じに)したくて、
今はそれぞれのファイルにおいて関数をテンプレートで書いて、
ひとつのファイルでそれらをミックスインしてるんだけど、他に良い方法
ないですか?
298デフォルトの名無しさん:2008/05/24(土) 00:48:34
ファイルを結合する
299デフォルトの名無しさん:2008/05/24(土) 01:17:12
>>295
writeln(dic[var("aaaa")])は,本当に割り当てたキーを参照してる?

dic[var("aaaa")] = 10;
dic[var("aaaa")] = 20;
writefln(dic); //-> [aaaa:10,aaaa:20]
300デフォルトの名無しさん:2008/05/24(土) 01:18:48
> 298
あー、なるほど・・・。ありがとうございます!
import("hoge.d"); ですよね。やってみます。

ピンと来たんだけど調べるのに時間かかってしまった・・・。
301297:2008/05/24(土) 02:02:50
正確には
mixin(import("hoge.d"));
でコンパイルオプション -Jhoge ってな感じですね。
うまくいきました。感謝です。

趣味でゲーム作るならやっぱりD言語ですねぇ
302デフォルトの名無しさん:2008/05/24(土) 07:25:47
>>299
わ、本当だ!
ありがとうございます。

if( var("aaaa") in dic ) {
 writeln( "has" ); //表示されない
}
303デフォルトの名無しさん:2008/05/25(日) 09:24:28
listviewにアイコン載せれるようになったらおいらはいつでも戻ってくる
304デフォルトの名無しさん:2008/05/25(日) 11:33:38
>>302
Dのリテラル文字列ってinternされないって事なのかな?
305デフォルトの名無しさん:2008/05/25(日) 12:37:31
ttp://wiki.dprogramming.com/Dfl/Snapshots

March 3, 2008
dfl-20080303.exe installer
    * Implemented ImageList.
    * Added images to ListView.

ttp://www.dprogramming.com/listviewimages.gif
306デフォルトの名無しさん:2008/05/25(日) 13:00:14
>>305>>303
307デフォルトの名無しさん:2008/05/25(日) 15:00:09
>>304
toHashは同じ値になるから,結局はopCmpやopEqualsの実装によるのではなかろうか
308デフォルトの名無しさん:2008/05/25(日) 16:32:51
>>307
var("aaa") == var("aaa") ってなりますね。
opCmpかな〜
309デフォルトの名無しさん:2008/05/26(月) 19:48:25
Dで大規模アプリの開発に取り掛かったんだけど言語の選択ミスしてる?
310デフォルトの名無しさん:2008/05/26(月) 19:54:02
大規模アプリってなんぞ
311デフォルトの名無しさん:2008/05/26(月) 20:24:55
>309
ムチャシヤガッテとは言っておく。
312デフォルトの名無しさん:2008/05/26(月) 20:33:41
>>309
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::。:::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::。::::::...... ...   --─-  :::::::::::::::::::: ..::::: . ..::::::::
:::::::::::::::::...... ....:::::::゜::::::::::..   (___ )(___ ) ::::。::::::::::::::::: ゜.::::::::::::
:. .:::::。:::........ . .::::::::::::::::: _ i/ = =ヽi :::::::::::::。::::::::::: . . . ..::::
:::: :::::::::.....:☆彡::::   //[||    」  ||]  ::::::::::゜:::::::::: ...:: :::::
 :::::::::::::::::: . . . ..: :::: / ヘ | |  ____,ヽ | | :::::::::::.... .... .. .::::::::::::::
::::::...゜ . .:::::::::  /ヽ ノ    ヽ__/  ....... . .::::::::::::........ ..::::
:.... .... .. .     く  /     三三三∠⌒>:.... .... .. .:.... .... ..
:.... .... ..:.... .... ..... .... .. .:.... .... .. ..... .... .. ..... ............. .. . ........ ......
:.... . ∧∧   ∧∧  ∧∧   ∧∧ .... .... .. .:.... .... ..... .... .. .
... ..:(   )ゝ (   )ゝ(   )ゝ(   )ゝ無茶しやがって… ..........
....  i⌒ /   i⌒ /  i⌒ /   i⌒ / .. ..... ................... .. . ...
..   三  |   三  |   三  |   三 |  ... ............. ........... . .....
...  ∪ ∪   ∪ ∪   ∪ ∪  ∪ ∪ ............. ............. .. ........ ...
  三三  三三  三三   三三
 三三  三三  三三   三三
313デフォルトの名無しさん:2008/05/26(月) 21:08:24
>>309
それはあくまで「趣味の範囲」での大規模ですね、わかります
314デフォルトの名無しさん:2008/05/26(月) 22:10:17
>>313
GUIです。
315デフォルトの名無しさん:2008/05/26(月) 22:22:10
GUI使ってれば大規模?
316デフォルトの名無しさん:2008/05/26(月) 23:20:17
ひょっとすると、GUIフレームワークを開発中なのでは?
317デフォルトの名無しさん:2008/05/26(月) 23:54:12
>>316・・・それはないだろう
>>314普通のGUIアプリならDでもいいけど
Dの利点は優れた構造化能力と何よりフロンティアであることです
実務を楽にこなしたいならC#の方がいいよ
318デフォルトの名無しさん:2008/05/27(火) 10:37:03
>>309
答えるのが難しい質問だね。
言語仕様自体は、コード解釈で微妙な誤解が起きたりしないよう
注意が払われてるなど、大規模開発を意識したものになってる。
しかし現状では、処理系やライブラリの熟成度に不安がある。
319デフォルトの名無しさん:2008/05/27(火) 12:08:48
------ test.d ------
class T1 {
  public int getint() { return 1; }
}

------ main.d ------
static import test;

class T2 : test.T1 {
  public override int getint() {
    return test.T1.getint();       // 駄目
    //return typeof(super).getint();  // こう書きたいけどこれも駄目
  }
}

int main() {
  auto t = new T2;
  return t.getint();
}


dmd.2.014で上のように書くとスタックオーバーフローになるのですが
dmd.2.014と私のどちらがおかしいのでしょうか?
私がおかしい場合、どのように書くのが正解なのでしょうか?
320デフォルトの名無しさん:2008/05/27(火) 15:11:58
public override int getint()
{
  return super.getint;
}
これじゃ駄目な理由は何?
321デフォルトの名無しさん:2008/05/27(火) 16:06:32
>>320
いえ、それで結構です。super.で呼べるのですね。
それを知らなくて return super(); とかいろいろやってました。
ありがとうございました。
322デフォルトの名無しさん:2008/05/27(火) 16:39:58
TinyXMLはObjectのメンバを再定義してる部分が多くて
全部hiddenなんとかのエラーが出てしまう
alias Object.print print;
public void print() {}
て全部やらないのいけないよね?
めんどいけどしょうがないのかな
323デフォルトの名無しさん:2008/05/27(火) 20:51:13
D言語とC++0xって闘ったらどっちが強いんですか!?
324デフォルトの名無しさん:2008/05/27(火) 20:57:58
純粋な疑問なんだけどプログラム言語の世界で「○○言語最強」とか言ってる連中って何がしたいの?
「強さ」の基準からしてまったくわからんのだけど。
325デフォルトの名無しさん:2008/05/27(火) 21:05:12
作者と信者がガチの喧嘩をしたらどっちが勝つかという問題だろう。
Dは少数派だから厳しいだろうな。
326デフォルトの名無しさん:2008/05/27(火) 21:13:40
D教祖の筋肉とチーマObjective-C信者の飛び道具がマジノ攻防戦?
327デフォルトの名無しさん:2008/05/27(火) 22:24:34
でもDは大砲も跳ね返すんだぜ?
http://www.kmonos.net/alang/d/2.0/dbc.html
328デフォルトの名無しさん:2008/05/27(火) 22:51:58
すげぇwwwwwwwwwwwwwwwwwww
D言語使わせてくれwwwwwwwwwwwwwwwwww
329デフォルトの名無しさん:2008/05/27(火) 23:02:19
D事態が弾を内包しているという罠・・・
330デフォルトの名無しさん:2008/05/28(水) 00:16:40
その弾丸と親和性が高いのではねかえせるのですね。わかります。
331デフォルトの名無しさん:2008/05/28(水) 00:39:32
DでBasicっぽいゲームエンジン作ろうかと思ってるのだがやめておいたほうがいいだろうか・・・
332デフォルトの名無しさん:2008/05/28(水) 00:45:54
D言語で最新のDirectX SDKを叩ける方法の方が…
333デフォルトの名無しさん:2008/05/28(水) 02:15:29
>>331
いや、やってみてから挫折しろよ
334デフォルトの名無しさん:2008/05/28(水) 05:49:30
>>332
最新に完全対応かどうかはわからないけど
DSourceにあるBindingsで叩ける
最新SDKとリンクさせてるけど、いまのところ問題ない。
335デフォルトの名無しさん:2008/05/28(水) 06:27:21
>>324
何がしたいっていうか、そういう遊びだろう。
勝敗の決まらない、操作そのものを楽しみ続ける格闘ゲームみたいなものだから、
基準がまったく定まらず、お互いにまったく噛み合わないこと自体も
彼らの求める相互排他とか衝突を生み出すいいきっかけなんだよ。
336デフォルトの名無しさん:2008/05/28(水) 07:27:03
>>327
なんでD言語のキャラクターはこんなにムカつくんだwww
337デフォルトの名無しさん:2008/05/28(水) 08:51:39
>>334
まじ?Bindingsってなんか依存関係でコンパイラがエラーはくんじゃなかった?
338デフォルトの名無しさん:2008/05/28(水) 11:11:11
ロゴがある言語って少ないんだからあのロゴキャラ消してもいいような…
339デフォルトの名無しさん:2008/05/28(水) 11:20:34
日本以外はサマータイムやってるから理論はいかがなものかと。
ウザカワキャラってことで売り出していこうぜ,
340デフォルトの名無しさん:2008/05/28(水) 11:41:16
>>337 そんなのとっくに直ってる
341デフォルトの名無しさん:2008/05/28(水) 13:57:47
GDI+ の D言語へのポートってないんですか?
自分でシコシコ作るしかないのかな…
342デフォルトの名無しさん:2008/05/28(水) 14:33:41
大規模やらDirectX10やら、やたら勇者がおおいな
343デフォルトの名無しさん:2008/05/28(水) 15:44:21
そう言えば日本のサマータイム導入はどうなるんだろう。
他の導入済み都市と比べて夏と冬の日照時間にほとんど差がないから意味がないような。
また政治家の手続き遊びによる金稼ぎが。
344デフォルトの名無しさん:2008/05/28(水) 20:29:27
毎年、切り替えの日に仕事遅刻するのが目に見えてるからやめてほしい。
345デフォルトの名無しさん:2008/05/29(木) 15:41:17
なんの話だよ
346デフォルトの名無しさん:2008/05/29(木) 15:58:53
サマータイムの話では。
347デフォルトの名無しさん:2008/05/29(木) 21:01:28
DigitalMars のサイトが……
348デフォルトの名無しさん:2008/05/29(木) 21:29:54
と思ったら蘇ってた
349デフォルトの名無しさん:2008/05/29(木) 21:49:18
一瞬だけ変なところ飛んだんだが、何事だったんだろうな
350デフォルトの名無しさん:2008/05/30(金) 01:11:16
glutを使いたいのですが、リンク時に
Error 42: Symbol Undefined _glutInit
というエラーが出てしまいます
調べてみたところ、おそらくglut32.libが原因のようで、
glut32.libは DIDE with D のものを使うといいとの事ですが、
DIDE with Dのサイトがもう見れなくなっていて困っています。
DIDE with D以外だとどこのglut32.libを使えば動くんでしょうか?
ちなみにimplib -a glut32.lib glut32.dl で作ったものと
yaneSDKに入っているもの、DedicateDのglut32.libを試しても同じエラーが出てしまいました。

それともなにか他の原因があるのでしょうか?
原因がわかりそうな方お願いします。
351デフォルトの名無しさん:2008/05/30(金) 01:15:26
>>350
.zipで上げてくれたら誰かやってくれるかもしれんよ
352デフォルトの名無しさん:2008/05/30(金) 02:15:14
SDL + opengl opengluなら普通に使えるけどglutは試してないなぁ。
353デフォルトの名無しさん:2008/05/30(金) 02:33:11
>>350
DLLがあるなら、implib /s glut32.lib glut32.dllでいいと思うのだが
354353:2008/05/30(金) 03:51:53
よく調べたら、extern(Windows)な関数のライブラリだった。
↑は使えない。
まずhttp://www.xmission.com/~nate/glut.htmlからvc++用のバイナリを落としてくる
それから、glut32.libをcoffimplib.exeでOMFライブラリに変換して、
それを使えば大丈夫なはず。
355353:2008/05/30(金) 04:06:26
あと、glutInitの宣言にextern(Windows)がついてないと思われるので、付けるように。

というか、むしろこっちが原因かも。
libファイルがどうこうじゃなくて。
yaneSDKに入っているものでも大丈夫だったし。
356353:2008/05/30(金) 04:23:03
>あと、glutInitの宣言にextern(Windows)がついてないと思われるので、付けるように。
extern(C)をextern(Windows)に変えろって意味ね。
357デフォルトの名無しさん:2008/05/30(金) 04:37:31
世話焼き萌え。
358350:2008/05/30(金) 11:55:05
>>355
extern(Windows)をつけたらできました。
レスくれた方ありがとうございます。
勉強になりました
359デフォルトの名無しさん:2008/05/30(金) 12:50:34
GLでがりがりやってる方もいるんだねぇ・・・
360デフォルトの名無しさん:2008/06/01(日) 01:29:20
さて、IDEはまだかね?
361デフォルトの名無しさん:2008/06/01(日) 01:44:58
っ Descent
362デフォルトの名無しさん:2008/06/01(日) 23:05:09
つ Entice Designer
363デフォルトの名無しさん:2008/06/01(日) 23:07:13
っ SASI
364デフォルトの名無しさん:2008/06/02(月) 02:32:17
っ Poseidon
365デフォルトの名無しさん:2008/06/02(月) 06:30:29
JDT並みの自動補完がほすい
366デフォルトの名無しさん:2008/06/02(月) 08:12:34
つ Descent
・・・より優れているのか?
367デフォルトの名無しさん:2008/06/02(月) 08:40:13
Descent はすぐに自動補完がぬるぽで落ちて、自動補完聞かないただのエディタと化してしまうからいまいち。
他はしらん。
368デフォルトの名無しさん:2008/06/02(月) 11:37:16
そんな現象なったことないな
369デフォルトの名無しさん:2008/06/02(月) 13:03:41
昔のVisualStudioはよくそんなことなってたよなw
Descentでなったことはないわ。
370デフォルトの名無しさん:2008/06/03(火) 03:28:47
DescentでMake使えるようにならんかなぁ
371デフォルトの名無しさん:2008/06/03(火) 03:34:26
と思ったらEclipseのBuilderから普通に使えた
372デフォルトの名無しさん:2008/06/04(水) 21:37:39
mixin(import("con"));

これ通らないのかよー
373デフォルトの名無しさん:2008/06/04(水) 21:42:58
>>372
-J.
374デフォルトの名無しさん:2008/06/04(水) 22:12:58
それしてもコンパイルは通ったように見えるけど、実際は何も生成されない。
375デフォルトの名無しさん:2008/06/04(水) 22:14:13
何も生成されない、というか空文字列として扱われてるみたい。
376デフォルトの名無しさん:2008/06/05(木) 08:25:02
>-J.
これがなんかの絵文字かなやんだおれは
修行がたりない
377デフォルトの名無しさん:2008/06/05(木) 15:40:40
>:-J.
378デフォルトの名無しさん:2008/06/05(木) 20:39:49
|| -J. |
- ノ
379デフォルトの名無しさん:2008/06/05(木) 21:33:30
||||
-J
o/
380デフォルトの名無しさん:2008/06/06(金) 08:02:35
やってることが暇人すぎてわろた
381デフォルトの名無しさん:2008/06/06(金) 17:40:20
何か建設的な話題はないのか
382デフォルトの名無しさん:2008/06/06(金) 20:03:30
2010年にD++が出る
383デフォルトの名無しさん:2008/06/06(金) 20:17:42
D#とDavaとDoberonも出るよ
384デフォルトの名無しさん:2008/06/06(金) 20:42:15
DaskellとかDCamlとかDispに期待。
385デフォルトの名無しさん:2008/06/06(金) 20:51:46
DOBOLだな
386デフォルトの名無しさん:2008/06/06(金) 20:53:36
最近はバグ取れてきた?
そろそろ本格的に使ってみようかと思うんだが(趣味でだけど)
JavaとRubyに慣れた身にはC++は苦痛・・・・・・代替言語が欲しい
387デフォルトの名無しさん:2008/06/07(土) 03:58:32
javaに慣れてるならライブラリが薄いこと以外はスーパーセット的に使えるだろ
rubyみたくクラスに機能をインジェクションしようと考えてテンプレートをいじる遊びもできるし
388デフォルトの名無しさん:2008/06/07(土) 11:02:13
>>386
バグは普通に使う分にはすでにあまり問題ないレベルであるように感じる。
趣味で追いかける分にはD言語は愉快な言語だと思う。
389デフォルトの名無しさん:2008/06/07(土) 15:20:19
struct Matrix(T, int M, int N) {
const Matrix!(typeof(T + U), M, N) opAdd(U)(Matrix!(U, M, N) that);
}

こんな感じでテンプレートの引数として使われてるテンプレート引数って推論できないものかなあ。
390386:2008/06/07(土) 15:23:42
>>387-388
ありがと。何よりもまず使ってみる
391デフォルトの名無しさん:2008/06/07(土) 16:44:05
質問。

template hoge(int hage) {
 void hogefunc() { ... }
}

void func(int arg) {
 mixin hoge!(arg);
 hogefunc();
}

って、どう展開されるんですか?
392デフォルトの名無しさん:2008/06/07(土) 16:47:00
argはコンパイル時定数じゃないからテンプレートに渡すことはできない。
393デフォルトの名無しさん:2008/06/07(土) 17:21:15
でもコンパイルとおっちゃうんですよねー・・・。

不定値になるのかな?
394デフォルトの名無しさん:2008/06/07(土) 17:28:14
バグでしょ。
395デフォルトの名無しさん:2008/06/08(日) 07:59:20
CTFEが働いているとかはないのか
396デフォルトの名無しさん:2008/06/08(日) 10:29:42
>>391
何故か0が渡されてる
http://codepad.org/qbKJaxYV
397デフォルトの名無しさん:2008/06/08(日) 12:24:22
typedefで初期値を変えても0が渡されてるからint.initですら無いようだねぇ。
398デフォルトの名無しさん:2008/06/08(日) 14:35:15
>>395
CTFEにしても、関数はランタイムでも実行できないとだめだから、
コンパイルが通るのがおかしい。
399デフォルトの名無しさん:2008/06/08(日) 18:03:26
既出のバグなのかな?
あの大量のリストを全部確認するのはつらいよなあ…
1000近くあるし英語だし…
というかこれも結構重複とかしてるんだろうなぁ…
400デフォルトの名無しさん:2008/06/08(日) 19:06:25
連想配列をイテレートする便利クラスってなかったっけ?

キーの大きい順にとか、値の小さい順にとかやりたいんだけども。
401デフォルトの名無しさん:2008/06/09(月) 00:03:47
しっかりしたライブラリなら、
  dsss build --doc
でドキュメントが生成できるのな。知らなかったぜ。
dsss net install は未だに成功した試しがないんだがw
402デフォルトの名無しさん:2008/06/09(月) 08:04:55
dmdとcandydocで作るのと一緒のやつだっけ?
そういえばdmd -doc使ってないなあ
プロファイラとコードカバレッジとユニットテストが
dmdでできるのは重宝しているが
403デフォルトの名無しさん:2008/06/09(月) 10:45:14
>>400
foreach (v; aa.keys.sort) {...} とかじゃ不足?
404403:2008/06/09(月) 10:48:26
微妙に間違えた。
キーで回すんだから foreach (k; aa.keys.sort) と書かなきゃ。
405デフォルトの名無しさん:2008/06/09(月) 14:45:00
値でソートしたり、値が一致したときにキーにフォールバックしたりしたいの。
406デフォルトの名無しさん:2008/06/09(月) 16:03:57
>>404
まだ微妙じゃないのか?
foreach (v, k; aa.keys.sort) じゃね?

>>405
>フォールバック
ちくしょう、おいらにゃ意味がわかんねぇ
407デフォルトの名無しさん:2008/06/09(月) 20:01:16
>>406
書くならこうだろう。
foreach (i, k; aa.keys.sort)
408デフォルトの名無しさん:2008/06/10(火) 02:19:56
今無性にimport文でワイルドカード使いたい。Javaみたいに。ニュースグループではそんな無駄な
機能いらねぇよ派が多数だったみたいだけどな。Tango のライブラリとか細かすぎていちいち
書くの面倒になっちゃうよ。DFL みたいに all.d みたいなファイルを用意しておけば、まぁ
似たようなことはできそうなんだけど。
409デフォルトの名無しさん:2008/06/10(火) 02:45:53
Tangoにもまとめてimportする用のモジュールあるじゃん。
410408:2008/06/10(火) 03:40:56
…あ。tango.group なんてあるのね。>>409 のお陰で得した気分だ、ありがとう
411デフォルトの名無しさん:2008/06/11(水) 04:09:13
処理速度ってC++より早いのか?
412デフォルトの名無しさん:2008/06/11(水) 08:37:58
また馬鹿げた質問を
単純ループのベンチマークでもとって比べるか?w
413デフォルトの名無しさん:2008/06/11(水) 08:49:25
処理速度気にするなら単純なコードでコンパイルして逆汗して比較汁
コンパイラの出来も同時に判る
組み込みやってた知り合いはそれやってたらできたてのコンパイラのバグみつけた
414デフォルトの名無しさん:2008/06/11(水) 10:00:11
string s = Format!("Arg %s = %s", "foo", 27);
を実行しようとすると、
cannot implicitly convert expression ("Arg %s = %sfoo27") of type const(char[]) to invariant(char)[]
て怒られた。

なんでstringで受けられないの? ってことと、あと文字列が連結されてるだけで置換されてない……。
公式のサンプル通りなんだけど、ドキュメント古くなってる? 俺がなんか変なことしてるのかな。
415デフォルトの名無しさん:2008/06/11(水) 13:33:38
metastringsのソース見れば分かるけど返ってくるのはconst char[]なので,
stringでは受けられないんじゃないかなぁ(実際はconst(const(char[]))かな).
使うときはいつもautoなので気にしてなかった.

それと,Formatの中ではchar[]で分岐してるので,
ここをconst char[]に修正しないとまともにフォーマットされない.
416デフォルトの名無しさん:2008/06/11(水) 20:46:29
Formatはconst/invariant導入されてから壊れっぱなしだな。
めったに使わないから不自由はしてないけど
417デフォルトの名無しさん:2008/06/11(水) 22:23:07
trunkにあるから書き換えてくれていいよ!
418デフォルトの名無しさん:2008/06/12(木) 12:28:58
D言語楽しい!
419デフォルトの名無しさん:2008/06/12(木) 14:41:53
さいきんBill Baxterさんが本家メイリングリストに出てこないなぁ。
お忙しいのか?
420デフォルトの名無しさん:2008/06/12(木) 21:27:19
>>418
The old collection package will be deprecated prior to Tango 1.0.
こういうところがだろ?wwわかります。
421デフォルトの名無しさん:2008/06/13(金) 01:09:15
ttp://www.dsource.org/projects/tango/forums/topic/523
これか
なんでいきなりそんなことになんのよw
あまりにもbetaがbetaとして機能してねえw
422デフォルトの名無しさん:2008/06/13(金) 01:11:20
D言語使いには勇者が多いw
423デフォルトの名無しさん:2008/06/13(金) 14:05:08
linux版のThreadクラスって、処理が終わってもリソース開放しないのな
Threadクラスはガベコレが見てるから、別クラスを作るわけにもいかないし
phobos書き換えないと使えないってどんだけ
std.fileもなんかおかしいし
linux版ってもしかしてだれも使ってない?
windowsから移ってきてみたら、びっくりだ
424デフォルトの名無しさん:2008/06/13(金) 15:36:39
たまにはソースとか読んでみようと思ったのに、
コンパイラにくっついてるのってひょっとしてフロントエンドの部分だけ?
コード生成とか最適化とかの部分はどっか別のところにある?
425デフォルトの名無しさん:2008/06/13(金) 16:10:26
>>424 その辺はdmcと共有してて非公開だったと思う
426デフォルトの名無しさん:2008/06/13(金) 16:24:39
>>424
フロントエンド部分だけがGDC用に公開されてる。
427デフォルトの名無しさん:2008/06/13(金) 18:58:39
ttp://www.dsource.org/
みれないようわーん
428デフォルトの名無しさん:2008/06/13(金) 20:35:38
>>427 もう見える
429デフォルトの名無しさん:2008/06/14(土) 02:14:13
dsource.org の鯖はあんまり栄養状態が良くないよな。鯖そのもの
だけじゃなく、プロジェクトも abandoned なのが多いし。
430デフォルトの名無しさん:2008/06/14(土) 02:34:32
windows やら unix やらばかりじゃなくて、
組み込みとかにも目を向けて欲しいんだが。
431デフォルトの名無しさん:2008/06/14(土) 02:37:06
組み込みでGCやなんやはオーバースペックじゃないか?

まあ、最近は組み込みっていってもWindows動いてたりするけどさ。
432デフォルトの名無しさん:2008/06/14(土) 02:41:09
最近の言語では一番組み込みに適用できそうな予感
ある程度のスペックのあるターゲットになるだろうけど
433デフォルトの名無しさん:2008/06/14(土) 07:51:10
>>429
終わってるプロジェクトとそうでないものを区別して欲しいな
最終更新日時でソートするだけでもいいけど
434デフォルトの名無しさん:2008/06/14(土) 11:44:06
tango、現trunkにて、tango.util.logパッケージでも破壊的な変更が…
いいぞ、もっとやれ(笑)
435デフォルトの名無しさん:2008/06/14(土) 13:55:46
うぉるたんからして破壊的な変更大好きだし。
436デフォルトの名無しさん:2008/06/14(土) 14:06:52
D好きはマゾですか
437デフォルトの名無しさん:2008/06/14(土) 14:12:28
破壊的な仕様変更は普及してない時期にしかできないw
438デフォルトの名無しさん:2008/06/14(土) 14:27:41
つまりDはいつまでも破壊的に変更できるわけですね!
439デフォルトの名無しさん:2008/06/14(土) 15:32:35
プロトタイプは一旦作ってソースを捨てるのが
正しい方法らしいからいいんじゃねw
440デフォルトの名無しさん:2008/06/14(土) 20:10:22
>>439
金と時間に余裕がなきゃできないけどなw
一度やってみたいよ。
441デフォルトの名無しさん:2008/06/14(土) 22:27:46
>>439,440
ありがとう、やってみる。
442デフォルトの名無しさん:2008/06/15(日) 01:11:12
>>441 何をだろう・・・
443デフォルトの名無しさん:2008/06/15(日) 01:26:51
>>441はうぉるたん
444デフォルトの名無しさん:2008/06/15(日) 01:35:24
TangoがDの命名規則に従う伏線とか…
445デフォルトの名無しさん:2008/06/15(日) 01:45:37
>>443
やめてくれww
446デフォルトの名無しさん:2008/06/15(日) 08:48:48
tango.text.Regex の正規表現のコンパイルの遅さに萌え
447デフォルトの名無しさん:2008/06/15(日) 10:09:02
gdc on MinGWのビルドがうまくいかん。
2.x系が使いたいんだが、
最近のバイナリってどっかにないかな?
448デフォルトの名無しさん:2008/06/17(火) 01:04:51
をるたんそろそろ更新をあたえてくれ〜
449デフォルトの名無しさん:2008/06/17(火) 02:03:08
tango.text.Regexがdebugビルド不可なのは、何の意図なのだろうか
450デフォルトの名無しさん:2008/06/17(火) 02:03:47
debugなんてのは臆病者のやることだ。
451デフォルトの名無しさん:2008/06/17(火) 04:21:22
臆病者と馬鹿者のどっちになるかってことだな。
452デフォルトの名無しさん:2008/06/17(火) 11:54:06
うぉるたんやプロパティの+=はまだかいの
453デフォルトの名無しさん:2008/06/18(水) 12:08:26
さっき食べたでしょ
454デフォルトの名無しさん:2008/06/18(水) 13:50:05
C++のstd::vectorぽいことをしたいのですが

動的配列+phobosのalgorithmで頑張る?
→push_backしたい。
→remove_if等が存在しないような?

tangoのcollectionを使う?
→sortやremove_ifをしたい場合、toArrayで配列にしないと無理?
→stable_sortが存在しないような?

いまいちこれだという方法が無い気がするのです。
なにか良いライブラリ等ありますでしょうか。
455デフォルトの名無しさん:2008/06/18(水) 21:47:21
→push_backしたい。
int[] a;
a ~= other;

→remove_if等が存在しないような?
2.x系なら
ttp://www.digitalmars.com/d/2.0/phobos/std_algorithm.html#inPlace

int[] arr = [ 1, 2, 3, 4, 5 ];
// eliminate even elements
auto r = eliminate!("(a & 1) == 0")(arr);
assert(r == [ 1, 3, 5 ]);
assert(arr == [ 1, 3, 5, 4, 5 ]);


で無理かな?
456デフォルトの名無しさん:2008/06/18(水) 22:30:55
Version D 2.015 Jun 17, 2008
PICマイコン対応…と夢想しかけた。
457デフォルトの名無しさん:2008/06/18(水) 22:36:30
* Function templates can now deduce the return type if they are declared with auto.
戻り値型推論キター

* Added Constraints to templates.
どうせならconceptまで実装してくれよ。
458デフォルトの名無しさん:2008/06/18(水) 22:44:30
(1) auto func(T)(){ return 1; }
(2) auto func(){ return 1; }

(1)は通るのに(2)は通らない。けち臭いなあ
459デフォルトの名無しさん:2008/06/18(水) 22:57:25
auto func()(){ return 1; } でおk
460デフォルトの名無しさん:2008/06/18(水) 22:58:50
ああ、テンプレートはパラメータなしでもよかったのか。
でも、ばっちいお…
461デフォルトの名無しさん:2008/06/18(水) 23:29:31
戻り値の型推論!!
でもなんで無名関数とテンプレートだけなんだ

* Added Constraints to templates.
これは何かすげーなw
462デフォルトの名無しさん:2008/06/18(水) 23:32:20
テンプレートの型推論のルーチンを
使い回すのが難しいコードになってるとか邪推。
463デフォルトの名無しさん:2008/06/18(水) 23:51:41
無名関数の戻り型推論って結構まえからできなかったっけ?
464デフォルトの名無しさん:2008/06/19(木) 00:01:38
そだね
今回できるようになったと言ってるわけじゃないんだわ
465デフォルトの名無しさん:2008/06/19(木) 00:14:16
auto f()(){
typeof(return) a;
return a;
}

void main() {
f();
}

コンパイラしんじゃうよー
466デフォルトの名無しさん:2008/06/19(木) 01:03:34
Constraintにキーワードifつかっちゃったのか。
なんか気持ち悪いな
467デフォルトの名無しさん:2008/06/19(木) 01:37:43
予約語はできるだけ増やさない、みたいな方針があるのかな。
前から結構使いまわしてるよね。
468デフォルトの名無しさん:2008/06/19(木) 02:05:49
ちょっとlibpngが使いたいと思ってポートがあるかなと思って検索してみたら、
こんなスレがひっかかってちょっとワロタ

D言語でエロゲーつくって
ttp://pc11.2ch.net/test/read.cgi/gamedev/1091256780/
469デフォルトの名無しさん:2008/06/19(木) 02:09:43
DからDirectXってそんなに面倒そうでもなさそうなんだがな・・・・・?
Cとのインターフェースはあるんだから
470デフォルトの名無しさん:2008/06/19(木) 02:12:49
すでに実例あり
ttp://video.google.com/videoplay?docid=-3577027688253678001&q=D%E8%A8%80%E8%AA%9EBOF+2008-03-01&ei=mUFZSJScBobCwgO55s2IDg

.hから.dにするときにマクロの展開だけが面倒
471デフォルトの名無しさん:2008/06/19(木) 02:21:43
>>470
正真正銘プロの犯行に吹いたw
472デフォルトの名無しさん:2008/06/19(木) 02:27:09
>>470
なんという勇者w
DirectXなんてほとんど使ったことないが、
面白そうだからちょっといじってみるか
473デフォルトの名無しさん:2008/06/19(木) 02:32:51
>>468
まったく人がいなくて吹いた。
SDL+OpenGLのほうがポーティング揃ってるし、DirectX使うより楽だとおも。
たしかゲーム用にラップしたライブラリあったし。

あとフリーゲームの『去人たち』って、エロじゃないけどノベルゲで、D言語で作ってたはず。
ただシステム糞重くてうわーって感じだったけど。
474デフォルトの名無しさん:2008/06/19(木) 09:45:23
>>465
呼び出す側で古代C言語みたいにvoid型でキャストしよう。
475デフォルトの名無しさん:2008/06/19(木) 12:14:53
DのIDLコンパイラとか誰か作ってないのかなあ
476デフォルトの名無しさん:2008/06/19(木) 14:15:34
>>469
DirectXはCOMオブジェクトだから、ポーティングの仕方がCライブラリとはちょっとだけ違う。
477デフォルトの名無しさん:2008/06/19(木) 16:37:52
ここまで型を書かなくてよくなったら
もういっそのこと無名関数テンプレートが欲しくなったんだがw
auto dg = (T,U)(T t, U u){ return t+u; };
するとこうなって
auto dg = (auto t, auto u){ return t+u; };
最終的にはこうか?w
auto dg = (t, u){ return t+u; };
これなんてマクロ?
478デフォルトの名無しさん:2008/06/19(木) 16:40:21
つーか、macroキーワードが使える日が早く来ればそれでいいんだよ…
479デフォルトの名無しさん:2008/06/19(木) 16:50:40
無名関数テンプレートが欲しいのは分かるが、できるとしても
alias (T,U)(T t, U u){ return t+u; } dg;
が精一杯。
480デフォルトの名無しさん:2008/06/19(木) 17:09:07
>>477
どうぞ。

auto dg = new class {
auto opCall(T, U)(T t, U u) {
return t + u;
}
};
481デフォルトの名無しさん:2008/06/20(金) 17:27:30
writeln(typeid(typeof((int i){})));

2.015でデリゲート型の引数が表示されないんだけど、前からだっけ?
482デフォルトの名無しさん:2008/06/20(金) 21:08:46
>>470
この会社に入りたい
483デフォルトの名無しさん:2008/06/20(金) 22:04:03
>>481
前からじゃない?
↓1.0
http://codepad.org/CREaEBun
484デフォルトの名無しさん:2008/06/21(土) 02:58:03
なんでBufferedFileはデストラクタでcloseしないんだ

とおもってソース見てみたら、そもそもデストラクタなかった。
どうなってんだよ。
485デフォルトの名無しさん:2008/06/21(土) 03:26:35
> これはつまり、 デストラクタからはメンバオブジェクトを参照できないことを意味しています。
これがなければデストラクタも使い物になるというものの…
486デフォルトの名無しさん:2008/06/21(土) 03:57:45
とりあえず必要だと思うのは、scopeメンバ変数だな。
コンストラクタで一回だけ初期化できて、オブジェクトがdeleteされるときに道ずれにdeleteするの。
487デフォルトの名無しさん:2008/06/21(土) 04:04:44
Tango導入しようかなあ…
phobosは統一性なさすぎて辛い…
488デフォルトの名無しさん:2008/06/21(土) 14:30:25
>>485
ファイルハンドルのような開放しなければならないメモリはガベコレの外にあるのだから、デストラクタに開放処理を書いても問題ないと思うけどね。
489デフォルトの名無しさん:2008/06/21(土) 14:33:35
IDisposable的なhackが必要になるってことか。
490デフォルトの名無しさん:2008/06/21(土) 15:29:12
>>485
これって、メンバオブジェクトをdeleteすることも認められないのかな?
491デフォルトの名無しさん:2008/06/21(土) 18:20:16
あーもー英語使わなくてもphobosのtrunkにコミットできたい
492デフォルトの名無しさん:2008/06/21(土) 19:39:11
staticメンバにリストを作って管理とか無理かな
493デフォルトの名無しさん:2008/06/21(土) 21:29:05
>>486
そんなのイラネwwww
って思ったけど、必要だな・・・
494デフォルトの名無しさん:2008/06/21(土) 21:45:08
>>488
たしか、デストラクタって呼ばれる保証はないんじゃなかったっけ?
だとしたら確実に行われなければならない処理をデストラクタに書くことはできないと思うのだけど。
495デフォルトの名無しさん:2008/06/21(土) 23:10:12
デストラクタからcloseとかの後始末関数を呼べばいいよ。
scope変数に入れたときは、必ずスコープアウトするときにデストラクタ呼ばれるから。
496デフォルトの名無しさん:2008/06/21(土) 23:15:25
C++で言うところの純粋仮想関数のように、
抽象クラス側のメンバ関数定義において
派生クラスで必ず上書きをする事を明示する修飾子ってありますか?
497デフォルトの名無しさん:2008/06/21(土) 23:19:56
abstract
498デフォルトの名無しさん:2008/06/21(土) 23:26:36
>>497
ありがとうございます!
499デフォルトの名無しさん:2008/06/21(土) 23:27:51
abstract属性
500デフォルトの名無しさん:2008/06/22(日) 03:41:51
  auto outfile = new FileConduit("output.txt", FileConduit.WriteCreate);
  auto file = new FileConduit("hogehoge.txt");
  auto buf = new BufferInput(file);
  while (buf.fill(buf) != IConduit.Eof) {
    auto str =  buf.slice(buf.readable);
    Cout.output.write(str);
    outfile.write(str);
  }
Tango なんだけど、Conduit から入力したものを複数の Conduit(?) に出力したいとき、
こういう風に一回バッファを介すしかないの?なんだか妙に生ぐさいやり方で気持ち悪いんだけど、
もっと良い方法ない?Conduit, Buffer, Input/OutputStream のあたりの仕組みが全く理解できない
501デフォルトの名無しさん:2008/06/22(日) 05:45:30
OutputStreamを継承して、複数のOutputStreamに流し込むようなオブジェクトを作ればいいのでは?
http://codepad.org/hco2juAc
502デフォルトの名無しさん:2008/06/22(日) 07:15:28
std.algorithmって今のところ配列にしか使えない?
自作のコンテナでも、イテレータ定義すれば使えるのかなと思ったんだが、そもそもイテレータの作り方がよくわからん。
opStarAssignとかないし。
503デフォルトの名無しさん:2008/06/22(日) 11:34:52
>>502
それ、以前調べたけどまだ無理だと思う。
std.algorithm の中でイテレータに対して foreach range 文を使ってるんだけど
現状では foreach range 文をカスタマイズできないから、独自イテレータを定義できない。
504500:2008/06/22(日) 13:27:30
>>501
おお、わざわざdクス。その方向でいってみるよ、ありがとう。
505500:2008/06/22(日) 17:02:06
あやしい InputFilter を作ることで、どうやらやりたいことが出来たみたいだ。
改めて>>501にdクス。
ttp://codepad.org/FtRWpF3b
506デフォルトの名無しさん:2008/06/22(日) 19:23:09
ConduitとStreamってどう違うの?
507デフォルトの名無しさん:2008/06/22(日) 22:13:10
IConduitはInputStreamかつOutputStreamなのだから、同じなんじゃないかと。
ただ、どうやらConduitがベースになってて、他の便利なストリームに突っ込んで使うのがいい感じらしい。
Conduitは「入出力先」、Streamは「使い方」みたいな使い分けなんじゃないかと思う。
あと、InputStreamとOutputStreamはほかのStreamとは若干違って、Conduitの役割をInputとOutputで分割したようなものだと思って使ってる。
508デフォルトの名無しさん:2008/06/22(日) 23:15:20
>>503
なる。どうもありがとう。
……がっかりだーorz
509デフォルトの名無しさん:2008/06/23(月) 09:16:36
はぁ?手軽に最高速がDの売りなんじゃないですかぁ?
バカなの?

ぶっちゃけC++のほうが100万倍マシ
510デフォルトの名無しさん:2008/06/23(月) 09:22:31
ええ全く、ウォルタンに言ってやってくださいよー
511デフォルトの名無しさん:2008/06/23(月) 09:25:52
>>509
元ネタはRubyだったのに何でC++に変えたの?
512デフォルトの名無しさん:2008/06/23(月) 13:40:30
複数ファイルを一度にimportする方法ってありますか?

// ファイル a.d
module  a;

// ファイル b.d
module b;

とかあった場合に

// ファイル include.d
module include;
import a;
import b;

とかして
import include;
でaとbをimportみたいにしたいのですが。
513デフォルトの名無しさん:2008/06/23(月) 14:02:24
public import a, b;
とかかな。
調べずに発言
514デフォルトの名無しさん:2008/06/23(月) 14:43:31
文字配列の連想配列の配列の配列の長さを変えるにはどうしたらいいのでしょうか
int main(){
char[][char[]][] list;
list.length = 100;
return 0;
}
とすると途中で止まってしまいます。
どのようにしたら止まらせずにlistの長さを伸ばしたり縮めたりできるのでしょうか
515514:2008/06/23(月) 14:46:04
すみません既出のバグなんですね…
>264試してみます
516514:2008/06/23(月) 15:04:03
すみません、やっぱり分からないです
nullで埋めるというのも分かりません
list[0] = null; とやっても使えないですし

連想配列を含む配列は使わない方がいいのでしょうか
517デフォルトの名無しさん:2008/06/23(月) 18:30:43
別にそれ自体として使わないほうがいいってことはないだろうが、
バグがあるんだから使わないほうがいいだろう。実際に使えないわけだし。
518デフォルトの名無しさん:2008/06/23(月) 18:41:51
519デフォルトの名無しさん:2008/06/23(月) 18:44:49
連投失礼
しばらくしたら消えるみたいだし、一応貼っておく
--
int main(){
typedef char[][char[]] Map = null;
Map[] list;
list.length = 100;
writef(list.length);
return 0;
}

--
100
520デフォルトの名無しさん:2008/06/23(月) 18:51:37
しばらくといっても結構長いみたいだね
>>20のもまだ消えてないみたいだし
521デフォルトの名無しさん:2008/06/23(月) 19:12:28
>>20
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, 乙);


はっちゃえ
522デフォルトの名無しさん:2008/06/23(月) 19:43:26
何のコードかと思ったら>>1乙とはw
523デフォルトの名無しさん:2008/06/23(月) 21:02:01
foreach( i, v, vs) {
 if( v.noneed ) {
  vs.remove(i);
 }
}

これが、2.0.15でできなくなった・・・
しかたないか
524デフォルトの名無しさん:2008/06/23(月) 21:11:30
foreach( i, v; vs) {
じゃなくて?
525デフォルトの名無しさん:2008/06/23(月) 21:21:00
あ、それそれ ごめん
526デフォルトの名無しさん:2008/06/23(月) 23:08:02
>>518
ありがとうございますm(_ _)m
不思議だ…
何でtypedefかませると動くんだろう

もう構造体かクラスかで囲ってそれを配列化しようかとか思ったけど
凄い人はやっぱりいるもんだなぁ

既出だろうけどモジュールと同じ名前のディレクトリがあるとldで躓いてコンパイル失敗するね
>519を動かそうと思ってn.dってファイル作ってdmd nさせたら
nってディレクトリがあるもんだから失敗した\(^o^)/
527デフォルトの名無しさん:2008/06/24(火) 00:17:50
ttp://dsource.org/forums/viewtopic.php?t=3279
このやたらハイテンションな中国人によると、Entice Designer で日本語が入力できない問題は、
同梱の Scintilla のバージョンが古いせいらしい。このポストのとおり、SciTE のバイナリを
落としてきて、SciLexer.dll -> enticelex.dll にリネームして上書きすれば日本語が通ったよ。
Entice、補完はいまいちだけど Descent より軽いので、漏れはコードエディタとして重宝してる。
528デフォルトの名無しさん:2008/06/24(火) 00:30:56
連想配列のlengthは読み取り専用だから>>261は動かなくて当然だけど、
>>514は連想配列か普通の配列かの判断が甘いから起こるのかな。
typedefすれば確実に普通の配列だとわかるからlengthに値をセットできる、と。
529デフォルトの名無しさん:2008/06/24(火) 00:47:32
>>528
その理屈はおかしい、
>>261のaは連想配列ではなくて動的配列だし、
typedefすることによって型の曖昧さが減るということもありえない。
530デフォルトの名無しさん:2008/06/24(火) 07:09:37
実行環境がLinuxだからとかではなくて?
531518:2008/06/24(火) 08:01:25
一応説明すると、
配列のところ読んだら連想配列も動的配列も長さ0で初期化されるとあったから
ふとtypedefするときに初期値を新しく指定できるっていうのを思い出して試しただけだったり
(最初は適当な配列で初期化しようとしたけど、連想配列リテラルがよく分からないからnullにしたら動いた)
試しにtypedefの
= null
を削るとcodepadでもTimeoutする

何で初期値指定すると動くのかとかはよく分からんが
532デフォルトの名無しさん:2008/06/24(火) 15:15:58
>513
できました!ありがとうございます。
533デフォルトの名無しさん:2008/06/24(火) 17:30:23
>>531
本来、nullと長さ零の配列は同じ扱いのはずなんだけどねえ
534デフォルトの名無しさん:2008/06/24(火) 21:55:41
全く同じわけではないらしい

void main()
{
int[] a = null;
int[] b = [1,2,3];
b.length = 0;
assert(a == b); // success
assert(a is b); // fail
}
535デフォルトの名無しさん:2008/06/24(火) 22:30:46
>>533
最初の頃はそういってたけど、いつの間にか仕様が変わったらしい。
536デフォルトの名無しさん:2008/06/25(水) 11:08:17
下記のように場合に、インナークラスから自身が持つフィールドと同名の
親階層のフィールドにアクセスしたい場合の方法ってありますか?
superは継承の場合だし、CTest.Value_はコンパイルエラーに。

class CTest
{
 int Value_;
 CInner Inner_;
 class CInner
 {
  int Value_;
  void Function(){
   // 自身のValue_を表示
   writefln("%d",Value_);
   // 親階層のValue_を表示する場合は??
   writefln("%d",???);
  }
 }
 this(){
  Value_ = 1;
  Inner_ = new CInner();
  Inner_.Value_ = 2;
 }
 void Function(){
  Inner_.Function();
 }
}
537デフォルトの名無しさん:2008/06/25(水) 11:28:43
538デフォルトの名無しさん:2008/06/25(水) 11:50:47
>>537
ありがとうございます。
this.outer.Value_ でいけました。
539デフォルトの名無しさん:2008/06/25(水) 13:42:23
そういえば outer ってキーワードなのな
540デフォルトの名無しさん:2008/06/25(水) 20:34:50
conceptまだー?
541デフォルトの名無しさん:2008/06/26(木) 01:31:03
542デフォルトの名無しさん:2008/06/26(木) 01:38:53
何やらブラクラ危険と専ブラが教えてくれるのだが
543デフォルトの名無しさん:2008/06/26(木) 08:44:44
>>542
心霊写真と見せかけてしばらく見てると白粉野郎がアップになるやつ。
544デフォルトの名無しさん:2008/06/26(木) 16:03:15
しばらくってほど時間が経過しないのがなんだかな
じーーっくりと見させてからやった方がダメージ大きいのに
545デフォルトの名無しさん:2008/06/26(木) 16:27:51
専ブラによってはアニgifのサムネイルが最後の1枚になってたりして効果ない
びびったけど
546デフォルトの名無しさん:2008/06/28(土) 02:31:24
>>541
びびった。だがD関係ねーや。

あるいはこれがまだ見ぬヲルタンの素顔なのか?
547デフォルトの名無しさん:2008/06/28(土) 02:58:59
ウォルたんにヒゲはあるのだろうか
548デフォルトの名無しさん:2008/06/28(土) 04:10:10
テンプレートって計算完備?
549デフォルトの名無しさん:2008/06/28(土) 06:08:29
折りたたむだけ
550デフォルトの名無しさん:2008/06/28(土) 17:30:05
hoge hige hage
551デフォルトの名無しさん:2008/06/28(土) 17:40:23
朝起きたら枕元に美少女死神が立ってて鎌で殺してくんねえかなあ…はぁ…
552デフォルトの名無しさん:2008/06/28(土) 17:45:54
Constraintsって何か意味あるんですか?
static ifで同じことができる気がするんですが
553デフォルトの名無しさん:2008/06/28(土) 17:48:19
>>552
分けてかけることに意味があるんじゃない?
よくわからんけど。
554デフォルトの名無しさん:2008/06/28(土) 21:03:45
>>553
うーん、わざわざ構文拡張してまでやることなのかな…
まあよく考えたら将来的な理由かもしれないし、
あんまりこだわらないことにします
555デフォルトの名無しさん:2008/06/28(土) 21:36:32
スクリプト言語ひとつ覚えたんで、次は念願のコンパイル型言語を――と思って
Dを狙ってるんですが、このスレ見る限りやめたほうがいいような気がしてきました。
この言語将来性あるんでしょうか? こんなに利用者にコケにされてる言語はじめてみた。
556デフォルトの名無しさん:2008/06/28(土) 21:41:27
このスレは信者だらけだから、少なくともコケにはされてないだろ。
557デフォルトの名無しさん:2008/06/28(土) 21:43:11
……コケにされてるか? むしろこのスレでは愛されてると思うんだがな。

まあそれはさておき、バイナリ吐く言語使いたいなら素直ににC/C++やった方がいいと思うんだ
558デフォルトの名無しさん:2008/06/28(土) 21:49:54
>555
初のコンパイラ方式をDにするのはやめたほうがいいのではないかと。
CかJavaかC#が良いと思う
Dは、ある程度以上の実力者が戯れるのには最適な言語だと思う
559デフォルトの名無しさん:2008/06/28(土) 22:00:03
いろいろできたのう

// 特殊化
template factorial(int n) {
enum factorial = n * factorial!(n - 1);
}
template factorial(int n : 1) {
enum factorial = 1;
}

// constraints
template factorial(int n) if(n != 1) {
enum factorial = n * factorial!(n - 1);
}
template factorial(int n) if(n == 1) {
enum factorial = 1;
}

// static if
template factorial(int n) {
static if(n != 1) enum factorial = n * factorial!(n - 1);
else enum factorial = 1;
}

// CTFE
int factorial(int n) {
if(n != 1) return n * factorial(n - 1);
else return 1;
}
560デフォルトの名無しさん:2008/06/28(土) 22:04:41
Java出身者にはテンプレートが魔法に見えるから困る
これだけでチューリング完全とかw
561デフォルトの名無しさん:2008/06/28(土) 22:11:52
なんというか、There's more than one way to do itって感じになってきたな…
562デフォルトの名無しさん:2008/06/29(日) 00:37:59
もともとそういう志向はなきにしもだったからな
でもテンプレート周りとかconst周りはmore than one wayだけでもないぜ。
コンパイル時に決定可能かどうかという重大な違いがある
563555:2008/06/29(日) 00:48:50
色々ありがとうございます。
言語仕様や標準ライブラリにいろいろけちつけるのは愛の鞭だったんですね。
初のコンパイラ型言語ってわけでもないので(Cを一通り。MinGWのWindows SDKにあちこち不備があるのが鬱陶しくなってやめた)
忠告を聞かずにDの世界に飛び込んでみます。
564デフォルトの名無しさん:2008/06/29(日) 00:55:09
>不備があるのが鬱陶しくなってやめた
ここがひっかかるw
Dはそんなのの塊のような気がす
565デフォルトの名無しさん:2008/06/29(日) 01:02:32
ゲーム作るのでなければwxDを使えばいくらか幸せになるかと
566デフォルトの名無しさん:2008/06/29(日) 01:24:57
>>564
> >不備があるのが鬱陶しくなってやめた
> ここがひっかかるw

まああの頃とは一味違うつもりなんで……不備は自分でどうにかできる、といいな。
>>565
GUIツールキットってメモリ喰いであまりいいイメージないんですよね。
せっかくWindows API結構覚えてるんで生で頑張ります。

と、ここまで書いてちょっと調べてみたらwxWidgetsって普通のGUIツールキットとはちょっと違うんですね。これは素敵かも。
567デフォルトの名無しさん:2008/06/29(日) 11:58:28
メモリの配置を覚えるためにもやっぱC/C++あたりを使うのがいいだろうな
CはやることやったらすぐC→C++でもいいと思うし
568デフォルトの名無しさん:2008/06/29(日) 12:46:39
C++は時間の無駄だと思ってるからやっぱりDで
569デフォルトの名無しさん:2008/06/29(日) 12:55:40
Dこそ時間の無駄で終わらなければよいが…って思ってる
いつか仕事で使える日が来ることを期待してるが
570デフォルトの名無しさん:2008/06/29(日) 13:11:16
仕事で使わせてくれる会社に入ればいい
571デフォルトの名無しさん:2008/06/29(日) 13:26:44
Hoge hoge = new Hoge();
SetWindowsLong(win, GWL_USER_DATA, &hoge);

ってかんじでウィンドウにインスタンスをひも付けさせたら
しばらくは使えるんだけど、そのうちインスタンスが
まともにとれなくなるのはやっぱりGCのせい?
572デフォルトの名無しさん:2008/06/29(日) 13:53:34
>>571
yes.
どこかに参照を残しておかないとなくなる。
573デフォルトの名無しさん:2008/06/29(日) 14:36:45
カーネルオブジェクトの中にある参照をGCが見つけられるわけがない
574デフォルトの名無しさん:2008/06/29(日) 15:06:22
DのGCって、再配置型?
575デフォルトの名無しさん:2008/06/29(日) 20:16:29
>>571
そもそもDのクラスは参照型なので、やるとしても
Hoge hoge = new Hoge();
SetWindowsLong(win, GWL_USER_DATA, cast(void*)hoge);
こうじゃないか?
&hogeだとhogeの寿命が来た時点でダメになる気がする。
576デフォルトの名無しさん:2008/06/29(日) 21:58:12
>>575
GreenPadのソースみながらウィンドウプロシジャ周り(0x042444c7の)をDでやろうとした時に引っかかったw
冷静になって考えれば簡単なミスなんだが。結構考え込んだ気がする。
577デフォルトの名無しさん:2008/06/29(日) 22:25:48
GWL_USER_DATAでぐぐったらこのスレが出た。
9時間弱しか経ってないのにgoogleすごいな
578デフォルトの名無しさん:2008/06/29(日) 22:31:21
最近のゴッゴル先生とか凄いよな…
足りない情報を探そうと思ったら〜というのを探してますっていう昨日の自分の書き込みがヒットしたり…
579デフォルトの名無しさん:2008/06/29(日) 23:56:57
2chで質問して反応がないので、後日検索すると
自分の質問が検索結果のTOPにでる悲しさ
580デフォルトの名無しさん:2008/06/30(月) 04:32:39
最近のゴッコル先生は2chのクローリング頻度をやたら上げてるからな
2chで質問してから2時間くらいで自分の質問が引っかかったことがある
しかし自分のブログは一切かからない
581デフォルトの名無しさん:2008/06/30(月) 06:23:57
更新頻度でクロール頻度も変えてたりするのかね
582デフォルトの名無しさん:2008/06/30(月) 08:54:49
switch〜case で break 書かなきゃ下に降りちゃうの?
こんなとこまでCを真似なくていいのに
583デフォルトの名無しさん:2008/06/30(月) 09:08:02
caseで複数条件に対して一つの処理にしたいときにできないと困るじゃない
584デフォルトの名無しさん:2008/06/30(月) 09:40:12
>>541見て心臓が痛くなったんだけど訴えたら勝てるかな
585デフォルトの名無しさん:2008/06/30(月) 09:54:58
すぐ下でびっくり系のブラクラって説明されてるのにクリックするなよ
586デフォルトの名無しさん:2008/06/30(月) 10:17:15
2ちゃんねる鉄の掟.

出されたご飯は残さず食べる。
転んでも泣かない。
おいら(ひろゆき)のギャグには大爆笑する。
587デフォルトの名無しさん:2008/06/30(月) 12:46:30
>>583
switch(n) {
case 1: ...
case 2,3: ...
case 4,5,6: ...
}
でいい
588デフォルトの名無しさん:2008/06/30(月) 12:50:23
そんなことよりもほかの言語との整合性が取れなくなって余計なヒューマンエラーが発生することのほうが問題。
って我らがうぉるたーたんのお達しだ。諦めておけ。
589デフォルトの名無しさん:2008/06/30(月) 12:52:13
まぁ、違う仕様にするならキーワードを case じゃなくて when にするとか
しないと混乱するしな。
590デフォルトの名無しさん:2008/06/30(月) 13:54:04
個人的にはswitch_breakみたいな名前でも欲しい
でも、無くてもそんなに困らないし、
そんなことよりライブラリをどうにか…
591デフォルトの名無しさん:2008/06/30(月) 20:41:27
case 0..10とかできないのかな。VBみたいだけど。
592デフォルトの名無しさん:2008/06/30(月) 23:14:06
いよいよ ... がほしくなる
593デフォルトの名無しさん:2008/06/30(月) 23:23:22
vbといったらcase is
594デフォルトの名無しさん:2008/07/01(火) 01:54:49
MPDさんのウィンドウは閉じないww
595デフォルトの名無しさん:2008/07/01(火) 01:55:25
誤爆すまぬ
596デフォルトの名無しさん:2008/07/01(火) 03:47:38
>584 はbreak; って書かれても fall thru しちゃういけない子
597デフォルトの名無しさん:2008/07/01(火) 05:58:54
switch (url) {
case ブラクラ:
if (res!=584) throw new bad_res;
}

こうですか?わかりま(ry
598デフォルトの名無しさん:2008/07/01(火) 06:10:32
res = 584;goto case ブラクラ;
599デフォルトの名無しさん:2008/07/02(水) 10:50:14
nullオブジェクトにアクセスしたときにAccess Violationになりますが、
このときにうまくスタックトレースを取る方法がありますでしょうか。
flectionedを使うと例外の場合のスタックトレースは取れたのですが……

600デフォルトの名無しさん:2008/07/02(水) 16:43:35
そこはddbgじゃねーかな
601デフォルトの名無しさん:2008/07/02(水) 17:13:59
関数内で定義したローカル変数のポインタを返しても大丈夫ですか?

int* Func(){
  int Num = 10;
  return &Num;
}

みたいにした場合にスコープを抜けてもアドレスは有効なのでしょうか。
602デフォルトの名無しさん:2008/07/02(水) 17:22:57
今年のD言語カンファレンスは、スピーカが集まらなかったので中止に
http://lists.puremagic.com/pipermail/digitalmars-d-announce/2008-July/009696.html

il|li orz il|li
603601:2008/07/02(水) 17:45:01
自己解決。
良いわけないですね。コンパイルエラーになりました。
604デフォルトの名無しさん:2008/07/02(水) 17:49:37
>>602
あらぁ…w
605デフォルトの名無しさん:2008/07/02(水) 20:06:05
東京でやってくれるなら喋りに行くのに。
606デフォルトの名無しさん:2008/07/02(水) 20:37:56
ネタがないっす
607デフォルトの名無しさん:2008/07/02(水) 20:40:31
英語ミリ
608デフォルトの名無しさん:2008/07/02(水) 21:52:24
>>602
え?どうせ行くつもりなかったけどいつ募集してたの?
609デフォルトの名無しさん:2008/07/02(水) 21:57:19
>>608
普通にずっとNGで募集してたと思うが。
610デフォルトの名無しさん:2008/07/03(木) 21:56:38
更新まだー?
611デフォルトの名無しさん:2008/07/04(金) 01:03:37
おまいらNGって何で読んでる?
612デフォルトの名無しさん:2008/07/04(金) 02:46:14
俺はfirefox
613デフォルトの名無しさん:2008/07/04(金) 06:42:09
thunderbirdで読んでる
614デフォルトの名無しさん:2008/07/04(金) 16:28:12
D2.0とphobosでeliminateなどで使用する叙述関数に
任意の引数を渡したいのですが、可能でしょうか?

void main(){
    const int Value = 3;
    int[] Nums = [1,2,3,4,5];
    Nums = eliminate!("a < Value")(Nums);
}

とか

void main(){
    const int Value = 10;
    int[] Nums = [1,2,3,4,5];
    static bool Func(int Src, int Value){
        return Src < Value;
    }
    Nums = eliminate!(Func(Value))(Nums);
}

のような事をやりたいのですが。
615デフォルトの名無しさん:2008/07/04(金) 16:58:48
D2.0のstd.streamって使えないんですかね
FileのreadLineをstringに渡そうと思ったら
Error: cannot implicitly convert expression (input.readLine()) of ty
pe char[] to invariant(char)[]
とかエラーがでるから困る

標準ストリームはdin,doutでいいんだけど
CFileを使うのは気が引ける。fopenとかいまさら使いたくないし
616デフォルトの名無しさん:2008/07/04(金) 17:08:14
時間ないから簡単に
前者はmixinで文字列生成
後者は
static bool Func(int Value)(int Src){return Src < Value;}
eliminate!(Func!(10))(Nums)
とか?
試してないから間違ってたらごめん
617デフォルトの名無しさん:2008/07/04(金) 17:10:44
ええい
mutable typeからinvariant typeへは明示的な変換が必要だからidup
string s = stream_.readLine().idup;
618615:2008/07/04(金) 17:45:28
>>617
っていうか標準ライブラリなんだからinvariant仕様に直しとけと言いたい
Fileをカプセル化した自前クラスで美味しくいただけそうです
619デフォルトの名無しさん:2008/07/04(金) 21:35:03
std.stringは全部をconst(char)[]にしてもらいたい
更新まだかなぁ・・・
620デフォルトの名無しさん:2008/07/04(金) 23:50:07
>>614
とりあえず成功する例
かっこ悪いのでbindとか関数リテラルがどのくらい効くのか教えていただけると助かります

const int Value = 3;
static bool func(int a) { return (a < Value); }

void main(){
        int[] Nums = [1,2,3,4,5];
        Nums = eliminate!(func)(Nums);
        writefln(Nums);
}
621デフォルトの名無しさん:2008/07/04(金) 23:55:51
>>616
後者は動きました。
>614のコードにはめると
eliminate!(Func!(Value))(Nums)
で動きますね
622デフォルトの名無しさん:2008/07/05(土) 01:33:35
Valueを用意する必要がないのでは?
あえて定数に名前を付けたいのなら enum Value = 3; をおすすめ
623デフォルトの名無しさん:2008/07/05(土) 01:34:07
あと std.bind はずっとぶっこわれ中
624デフォルトの名無しさん:2008/07/05(土) 11:41:28
lazyな引数を関数外部に持っていく方法あったら教えてくれ〜
625デフォルトの名無しさん:2008/07/05(土) 13:46:31
void delegate() dg;
void func(lazy void a) {
dg={return a;};
}

これでいけると思うんだがコンパイラが死ぬな。

void func(void delegate()[] a...);
でも使っとくといいと思う。
626614:2008/07/06(日) 01:30:55
すいません、説明不足でした。
というか提示した例が悪かったです。
比較したいValueは動的な値です。

const int Value = 3;

int Value = 3;
に置き換えた場合で考えて頂けますでしょうか。

C++でboost::lambdaを使った場合の

int Value = 3;
remove_if(Nums.begin(), Nums.end(), _1 < Value);

のようなことがやりたいのです。
627デフォルトの名無しさん:2008/07/06(日) 01:47:05
謎さんとこのstd.expressionとか。
628デフォルトの名無しさん:2008/07/06(日) 01:49:21
phobosのstd.algorithmはコンパイル時に決定してる関数しか受け付けないから不便だな。
とっとと、static引数導入してオーバーロードで関数ポインタとかも取れるように整理してほしいわ
629デフォルトの名無しさん:2008/07/06(日) 03:06:20
自分で書くしかなくね?
import std.stdio;
T[] removeIf(alias cond, T)(T[] arr) {
T[] ret;
foreach (i; arr)
if (cond(i))
ret ~= i;
return ret;
}
void main() {
auto less3 = (int i){return i < 3;};
static bool greator3(int i){return i > 3;};
int[] arr = [1,2,3,4,5];
writefln(removeIf!((int i){return i<4;})(arr));
writefln(removeIf!(less3)(arr));
writefln(removeIf!(greator3)(arr));
}
630デフォルトの名無しさん:2008/07/06(日) 03:12:21
closureあるから
int j = 3;
auto less = (int i){return i<j;};
これできるよ
631デフォルトの名無しさん:2008/07/06(日) 03:26:59
名前が付いてないとダメだってのは使い勝手が悪いな
632デフォルトの名無しさん:2008/07/06(日) 08:29:38
俺もそう思ってたが実は無名関数でもいけてる件
633デフォルトの名無しさん:2008/07/06(日) 13:14:43
>>632
コードplz
634デフォルトの名無しさん:2008/07/06(日) 16:05:28
>>629のこれのことなのだが
writefln(removeIf!((int i){return i<4;})(arr));
もしかしてphobosの話だろうか
635デフォルトの名無しさん:2008/07/06(日) 17:20:20
こないだのアップデートからリテラルのaliasも取れるようになったんだっけか。
636デフォルトの名無しさん:2008/07/06(日) 19:50:48
ああそれでか
637デフォルトの名無しさん:2008/07/06(日) 21:17:26
連想配列の clear ってどうやるですか?
638デフォルトの名無しさん:2008/07/06(日) 21:33:51
新しいのと取り替えればいいんじゃない?
639デフォルトの名無しさん:2008/07/06(日) 22:03:14
これでよくなかったっけ
int[int] a = [1:1];
writefln(a);
a = null;
writefln(a);
640デフォルトの名無しさん:2008/07/06(日) 22:23:11
それは空のと取り替えただけでクリアしたと言えるかは疑問だな。
もとのaの参照をどこかで持ってれば、そっちはクリアされないわけだし。
641デフォルトの名無しさん:2008/07/06(日) 22:38:19
foreach (key; aa.keys)
  aa.remove(key);
じゃダメ?
642デフォルトの名無しさん:2008/07/07(月) 02:05:06
2.016まだかよー
643デフォルトの名無しさん:2008/07/07(月) 13:24:28
>629
やりたかったのはまさにこれです。
ばっちりです。ありがとうございました。
644デフォルトの名無しさん:2008/07/07(月) 13:47:40
D言語の配列は参照型だとあるのですが、引数で渡す場合は確かにrefを
つけなくても参照で渡されているのですが、返値で返した場合って.dup
されたものが返されてしまうのでしょうか?

class CTest{
    int[] Nums;
    this(){
        Nums ~= 1;
        Nums ~= 2;
        Nums ~= 3;
    }
    int[] GetNums(){return Nums;}
}

void main(){
    CTest Test = new CTest;
    int[] Nums = Test.GetNums();
    Nums ~= 4;
}

でTest.Numsに4を追加したいのですが。

配列に限らずD言語で参照返しする場合ってどうやるのでしょうか。
645デフォルトの名無しさん:2008/07/07(月) 14:22:17
もうすぐTango 0.99.7リリース来そうですね。
http://twitter.com/larsivi/statuses/851357615
646デフォルトの名無しさん:2008/07/07(月) 14:58:32
>>644
Nums ~= 4; の直前と直後の配列のポインタを見てみるとわかるけど、インスタンスが変わっちゃってる。
# ということは、 ~= の演算子は配列のインスタンスに対する捜査ではなくて、配列のインスタンスを保存している変数に対する操作っていうこと…かな?
classの場合は普通に返せる。配列だけは操作するときにインスタンスが同じものになるかどうか注意しなきゃいけない。
# 配列の要素を増やす時は違うインスタンスになる場合があって、配列の要素を減らす場合にはインスタンスは変わらない。
tangoのArrayBagみたいなクラスでラップすると幸せになれるかもしれない。
647デフォルトの名無しさん:2008/07/07(月) 15:09:35
Core2DuoE6600の環境なんだけどstd.cpuid.amd64がtrue
笑っちゃった。俺の環境がおかしいのか?
648デフォルトの名無しさん:2008/07/07(月) 16:06:54
>646
試してみましたが自分の環境では ~= の前後ではアドレスは変わらなかったです。
そして引数で渡したときはアドレスが変わらず、返値で返した場合はアドレスが
変わっていました。

class CTest{
    int[] Nums;
    this(){
        Nums ~= 1;
        Nums ~= 2;
        Nums ~= 3;
    }
    int[]* GetpNums(){return &Nums;}
}

void main(){
    CTest Test = new CTest;
    int[]* pNums = Test.GetNums();
    *pNums ~= 4;
}

と配列のポインタを返すようにしたらできました。
ただ、これだとGCがちゃんと返した配列のポインタを追ってくれるのかが不安だったり。
うーん、いまいち配列の扱いがわからない。

やはりクラスでラップするのが安全なのかなぁ。
649デフォルトの名無しさん:2008/07/07(月) 16:13:58
たぶん勘違いしてる、というか俺の伝え方が悪かった。すまん。
配列のポインタは Nums.ptr これで得られる。
http://codepad.org/tvVXZGEx
↑を参考にするとわかると思う。
# ちなみに、容量をリザーブしておくとインスタンスが変わらない。
# コメントアウトをはずすと同じポインタになる。
650デフォルトの名無しさん:2008/07/07(月) 16:26:26
>>648
codepadの環境では、前後でアドレスは変わった。
http://codepad.org/Mxf3ifJm
> Test.Nums: [401C3FB0]
> main.Nums(before): [401C3FB0]
> main.Nums(after): [401C2F80]

一応、仕様では「配列の連結は、 片方が長さ 0 の配列であっても必ずコピーを伴います」
だそうなので、Nums ~= 4; でローカルのNumsアドレスが新しい配列のものになるのが正常だと思う。
(つまり、参照先の配列インスタンス自体を連結演算によって変更するのは無理ってこと)

一個のメンバ変数を対象として変更する場合はメンバ変数への参照(ポインタ)を返してやればいいけど、
それだとTest.Numsの指す配列が他の変数によって参照されてたりするとやっかいな問題になると思う。
651デフォルトの名無しさん:2008/07/07(月) 16:50:42
>>647
AMD64とEM64Tってほぼ互換じゃなかったっけ
652デフォルトの名無しさん:2008/07/07(月) 16:53:20
>>649
> # ちなみに、容量をリザーブしておくとインスタンスが変わらない。
> # コメントアウトをはずすと同じポインタになる。
ホントだ。

Nums ~= 4; を Nums = Nums~4; とすると、アドレスが変わるようになる。
http://codepad.org/WetmPBdy

アドレスが変わらない場合も、Test.Numsの長さが自動的に延びるわけじゃなくて、
スライスみたいなことになってるみたいだ。(Test.Numsには4は追加されない)
http://codepad.org/cWJnruXE

こういう仕様なのかバグなのか。実装を考えればこの挙動は自然だけど……
653デフォルトの名無しさん:2008/07/07(月) 17:19:30
>>651
俺の無知か。スマソ
654デフォルトの名無しさん:2008/07/07(月) 17:58:19
lengthを増やすとアドレスが変わってしまいますね。
そしてリザーブしてもアドレスは変わらないが、追加されたメンバが
更新されないと……

http://codepad.org/Kg0yzNfz
みたいに引数にリファレンスで渡した場合は追加されるので、それと
同じ事が返値でもできればいいのですが。
C++のように返値のリファレンス指定でできないんですねぇ。
655デフォルトの名無しさん:2008/07/07(月) 18:29:01
std.xml、マニュアルにあるサンプルプログラムちゃんと動く?
どうしてもうまく動かない・・・
2.0.15です
656デフォルトの名無しさん:2008/07/07(月) 18:50:59
前に誰かがstd.xmlが動かなくなったって言ってたような・・・
trunk版でも無理なのだろうか
657デフォルトの名無しさん:2008/07/07(月) 19:23:54
>>654
>C++のように返値のリファレンス指定
俺もこれほしいかも
というか、参照とかポインタとかはC++のほうがわかりやすくて好きだ…
658デフォルトの名無しさん:2008/07/08(火) 00:43:38
(関数ポインタを除く)
659デフォルトの名無しさん:2008/07/08(火) 00:57:05
>>645
linux環境だと、Theadクラス使うと落ちまくってとても使えたものじゃないのだが、
いつになったら直るのだろうか・・・
660デフォルトの名無しさん:2008/07/08(火) 13:22:48
>>645
ん、まさか tnago に DBI でもマージするつもりなのか…
アレの SQLite バインディングは動かないコードのまま trunk に放置されてるからなぁ…
661デフォルトの名無しさん:2008/07/09(水) 00:02:39
>>645
じゃあ、0.99.7に移行する前に破壊的変更の予習。
http://www.dsource.org/projects/tango/wiki/0_99_7_BreakingChanges
今回多いなw
662デフォルトの名無しさん:2008/07/09(水) 01:17:41
>>661
>tango.io: The use of FilePath and PathView in FileConduit is deprecated in favour of char[] paths
>tango.text.xml.XmlPrinter: Deprecated in favor of DocPrinter
>tango.group: Deprecation period expired, so will be removed.
ここら辺はかなり厳しそうだな。
663デフォルトの名無しさん:2008/07/09(水) 02:17:16
phobosのtrunkが大量に更新されてる件
664デフォルトの名無しさん:2008/07/09(水) 02:24:07
あ、やべぇ、なんかTangoのD2.0のマージ来た…!?
http://www.dsource.org/projects/tango/browser/branches/experimental/D2.0
665デフォルトの名無しさん:2008/07/09(水) 03:23:46
暴走するのはPhobosだけにしてくれよ…
666デフォルトの名無しさん:2008/07/09(水) 03:34:05
これはDコミュニティの文化だよ
667デフォルトの名無しさん:2008/07/09(水) 04:46:53
>>664 キタ━(゚∀゚)━!!
668デフォルトの名無しさん:2008/07/09(水) 11:04:08
PhobosとTangoがなかよくなりますように・・・
669デフォルトの名無しさん:2008/07/09(水) 18:53:28
2.016もきた

- re-implemented internal.monitor in D. Rationalized internal.object
- Bugzilla 288: changed return type of opEquals from int to bool. ***This necessitates doing a grep for opEquals and changing all the return values.***
- Added .__vptr and .__monitor properties for class objects for use in the internal runtime library.
- Made rdmd's source available through svn, see http://dsource.org/projects/phobos/browser/trunk/tools/rdmd.d
- Simplified std.algorithm by fusing together higher-order functions taking an alias and their counterparts taking a string
-Added module std.array containing array operations: insert, erase, and replace
-Changed the enforce's implementation to generate smaller code per call
-Changed std.functional.binaryFun to work with strings and function aliases alike
-In std.getopt, added optChar, assignChar, and endOfOptions, per popular demand :o|
-In std.math, replaced a bunch of consts with enums
-In std.numeric, added Don Clugston as author and operated minor documentation fixes
-Improved std.stdio.chunks to take an iteration tally in addition to the chunk

また、すごい変更がw

670デフォルトの名無しさん:2008/07/09(水) 19:16:19
大して大きくないような。.__vptrと.__monitorは今まで無かったのが(ry
それより修正して欲しかったバグの修正ktkr
671デフォルトの名無しさん:2008/07/09(水) 20:07:24
よくわからん・・・誰か要点を・・・
672デフォルトの名無しさん:2008/07/09(水) 22:05:19
>>671
opEqualsの戻り値型が変わったことぐらいだろ。
673デフォルトの名無しさん:2008/07/10(木) 12:38:58
stringzとかいう型出来ないかな

文字列が入ると最後に'\0'を埋めてくれて
writeflnなどD用の時は'\0'を無視、
C用の時は'\0'を使えるという感じに
もしくはC用の関数内では最後に'\0'が付加されるというような

toStringzで事足りるんだけどな
674デフォルトの名無しさん:2008/07/10(木) 16:34:06
>>673
リンケージによって文字列の内部構造が変化するのは便利かもだけど怖い
675デフォルトの名無しさん:2008/07/10(木) 20:38:11
opEqualsとうとうboolになったのか。
パフォーマンスが云々うぉるたんが抵抗してたのは解決したんかな。

しかしTangoはどうあってもモジュール名のUpperCamelを止める気はないのだろうか。
676デフォルトの名無しさん:2008/07/10(木) 21:39:03
>>675
いまさら変えられても混乱するしこのままでいいかなって最近思ってきた。
677デフォルトの名無しさん:2008/07/10(木) 21:49:20
opAssign定義した構造体の連想配列に新しく要素を格納しようとすると落ちるのは何でなんだぜ?
678デフォルトの名無しさん:2008/07/10(木) 23:18:34
独り言だけど、Win32 とのやり取りが面倒なので、
普通にマルチバイト文字が使えるようにして欲しい。

const char *track_name[] = [mbs"日本語",mbs"日本語"];

みたいな。
679デフォルトの名無しさん:2008/07/11(金) 00:05:18
今更A関数なんて使わないっしょ。W関数で十分っしょ。とか言われてたなあ。
680デフォルトの名無しさん:2008/07/11(金) 03:19:48
>>678
それはコンパイル時に文字コードが決まるの?それとも実行時?
681デフォルトの名無しさん:2008/07/11(金) 03:23:24
CTFE-ableな変換関数をですね…

const achar* track_name[] = [astring("日本語"), astring("日本語")];
682デフォルトの名無しさん:2008/07/11(金) 08:59:23
もうShift-JISはやめようぜ
683デフォルトの名無しさん:2008/07/11(金) 11:30:13
今更A関数なんて使わないっしょ。W関数で十分っしょ。
684デフォルトの名無しさん:2008/07/11(金) 12:46:38
685デフォルトの名無しさん:2008/07/11(金) 13:41:25
いまどきデフォルトエンコードがUFT-8じゃないOSが糞ということ
686デフォルトの名無しさん:2008/07/11(金) 13:45:36
>>684
>5のマヌケな足の開き方が素敵
687デフォルトの名無しさん:2008/07/11(金) 13:48:48
主要なソフトがsjisにも対応していればいいだけの話で
過去との互換性を気にするならば
最低限のテキストエディタのメモ帳ぐらいが対応すればいい話

win用で人気のあるテキストエディタはutf8とか対応してるしな
688デフォルトの名無しさん:2008/07/11(金) 14:49:14
はやくstdoutにフィルターをかぶせられるようにしてほしい。
689デフォルトの名無しさん:2008/07/11(金) 20:18:32
クラスに単純な値コピーをさせる方法ってありましたっけ
690デフォルトの名無しさん:2008/07/11(金) 20:59:24
>>688
ああそういうことができるんだね
でもできないんだね

>>689
あったっけ?なかったような
691デフォルトの名無しさん:2008/07/11(金) 22:59:57
中文やらハングルやらが扱えないようにおれは A のAPIでやってるぜ。
692デフォルトの名無しさん:2008/07/12(土) 01:28:36
だいぶ前に出てて挫折してた
「dsource.orgのWin32Api Bindingsをdmd2.0でコンパイルすると出るエラー」

が、いつの間にかなくなってるッ!!

>>340(いつからなおってたんだー!?)
やっと2.0系に復帰できるワァ
693デフォルトの名無しさん:2008/07/12(土) 01:41:01
>>692
半年前には大丈夫っだった気がするが、
使ってるAPIの差かもしれん
694デフォルトの名無しさん:2008/07/12(土) 06:31:50
>>692
DMD2.016でまたむりぽ
695デフォルトの名無しさん:2008/07/12(土) 07:25:41
>>692
半年前には直ってたものを壊れた瞬間に知るとかw
696デフォルトの名無しさん:2008/07/12(土) 07:28:55
型なのに型として認識してくれなくてやってた苦肉のtypeof(型)ができなくなってるね
元々の問題が修正されたのならいいのだけど
697デフォルトの名無しさん:2008/07/12(土) 10:44:36
DMD 2.017 リリース
698デフォルトの名無しさん:2008/07/12(土) 11:16:58
>>697
まじだ
バグフィックスだけだね
699デフォルトの名無しさん:2008/07/12(土) 15:04:08
Webから画像ダウンロードできたりしますか
700デフォルトの名無しさん:2008/07/12(土) 15:27:12
できる。
701デフォルトの名無しさん:2008/07/12(土) 21:05:40
>>678
だからUTF-8でない文字列をchar*に入れるなとあれほど…
702デフォルトの名無しさん:2008/07/12(土) 21:12:50
mbsはubyte*にするべきだったりするの?
703デフォルトの名無しさん:2008/07/12(土) 21:14:19
>>702
もちろん
704デフォルトの名無しさん:2008/07/12(土) 22:16:11
charはutf-8って規格で決まってるからな−。
それ以外が入ってるのは気持ち悪いというか、間違っているという話。
705デフォルトの名無しさん:2008/07/12(土) 23:09:10
706デフォルトの名無しさん:2008/07/13(日) 00:35:33
もうstd.encodingがあるしやるならその上に作るべきでは
707デフォルトの名無しさん:2008/07/13(日) 00:37:29
>>705
wstring toUTF16(in mbchar[] s, in uint codePage=0)
{
mbstring sz = (s ~ cast(mbchar)'\0').idup;
wstring result;
result.length = MultiByteToWideChar(codePage, 0, cast(char*)(sz), sz.length, null, 0);
MultiByteToWideChar(codePage, 0, cast(char*)sz, sz.length, cast(wchar*)result, result.length);
return result;
}

invariantであるresultに書き込もうとしてるのはおかしいな。
キャストしてしまってるから本来検出されるはずなのエラーがでなくなってる。

MultiByteToWideChar(codePage, 0, sz.ptr, sz.length, result.ptr, result.length);
でコンパイル通るように直したほうがいい。
708デフォルトの名無しさん:2008/07/13(日) 01:23:06
Dで外部アプリの実行とかってどうやればできますか。
709デフォルトの名無しさん:2008/07/13(日) 01:27:03
>>707
>>708
import std.process;
std.process.system("dir");
710デフォルトの名無しさん:2008/07/13(日) 01:31:20
>>706
正直申し上げますと、あれインターフェイスが糞すぎる
711デフォルトの名無しさん:2008/07/13(日) 01:34:08
>>709
あ・・・ありがとう。
CreateProcess使ってできてやったーとか思ったらそんな簡単に・・・
712デフォルトの名無しさん:2008/07/13(日) 01:35:03
std::basic_stringの仕組みを丸ごと移植したらどうかと思うのだが
713デフォルトの名無しさん:2008/07/13(日) 01:44:57
>>707
> MultiByteToWideChar(codePage, 0, sz.ptr, sz.length, result.ptr, result.length);
> でコンパイル通るように直したほうがいい。
え・・・そんなんできんの・・・
714デフォルトの名無しさん:2008/07/13(日) 02:02:06
OpenGLのポーティング、D2.0でもデフォのまま使えるようになったのね
さっき最新取ってきて直そうと思ったら、既に修正済・・・感動した
715デフォルトの名無しさん:2008/07/13(日) 02:07:24
Linux系でD言語やろうと思ったらここ見ればいいってHPないですかね。
716デフォルトの名無しさん:2008/07/13(日) 02:07:29
>>713
???
717デフォルトの名無しさん:2008/07/13(日) 02:11:21
>>716
MultiByteToWideChar(codePage, 0, sz.ptr, sz.length, result.ptr, result.length);
キャストなしのこれをコンパイルエラー出さずに書くやり方があるのかなと
718デフォルトの名無しさん:2008/07/13(日) 02:50:24
もうperlみたいにしてしまえ
719デフォルトの名無しさん:2008/07/13(日) 04:22:25
tangoのProcessってサンプル使ってもうごかないんすけど。
720デフォルトの名無しさん:2008/07/13(日) 04:25:54
よくあること
721デフォルトの名無しさん:2008/07/13(日) 04:41:14
Executeしないと動かなくなってた><
722デフォルトの名無しさん:2008/07/13(日) 05:20:48
HttpClientのGetResponseが爆発してて自分の手に負えません。

だれか画像ゲットのやりかた教えてください。
723デフォルトの名無しさん:2008/07/13(日) 08:40:25
1年ぶりに着たけどやっぱ仕事では使えなさそう。
俺と同じ。知ってた。
724デフォルトの名無しさん:2008/07/13(日) 09:09:18
>>720
本当に良くあるから困る
stdioのwriteflnの時は俺がラリった
ioを自分で作成して出力せにゃいかんのかと思ったり
725722:2008/07/13(日) 09:29:22
Descentが教えてくれる関数一覧を信じすぎました。
事故解決。
726デフォルトの名無しさん:2008/07/13(日) 18:23:13
だから安定版ならD1.0があると(ry
727デフォルトの名無しさん:2008/07/13(日) 18:36:52
D1.0系列って本当に安定してるの?
728デフォルトの名無しさん:2008/07/13(日) 18:37:31
仕様は安定してるよ。
729デフォルトの名無しさん:2008/07/13(日) 18:55:23
>>726-728
わらた

このままバージョンが変わらないでいてくれたら
D-1とかD-2とかいう扱いでコードの配布が安定できて嬉しいな
730デフォルトの名無しさん:2008/07/13(日) 19:00:23
D2.0が安定化するころにはD3.0が登場してて阿鼻叫喚になってると予想してみる
731デフォルトの名無しさん:2008/07/13(日) 19:02:17
メジャーバージョンアップ=仕様の確定=完全な互換性の断ち切り
732デフォルトの名無しさん:2008/07/13(日) 19:06:18
phobos vs tango
d1.0 vs d2.0
で組み合わせが四通りあるから困る
d1.0+phobosで開発してきたが、tangoのFiber使いたい俺としては
せめてphobosとtangoが共存してくれれば...
733デフォルトの名無しさん:2008/07/13(日) 19:12:06
http://codepad.org/biiWqnSH
FizzBuzz書いてみたいがtoStringってコンパイル時に動かないんだな
734デフォルトの名無しさん:2008/07/13(日) 20:00:40
>>733
っ std.metastrings
735デフォルトの名無しさん:2008/07/13(日) 20:07:07
DだとFizzBuzzを最小何文字で作れるんかな
ちなみに俺は140文字だった
736デフォルトの名無しさん:2008/07/13(日) 20:18:48
>>735
http://www.shinh.org/p.rb?FizzBuzz#D
に83バイトという記録がある。
いったいどんなコードなのやら。
737デフォルトの名無しさん:2008/07/13(日) 20:24:29
>>730 それは>>731から本望 QED
>>732 tangoがphobos準拠じゃないのが悪いんだよ
なんで自作ライブラリごときが標準ライブラリと共存できないんだってことだよw
738デフォルトの名無しさん:2008/07/13(日) 20:33:21
tangobosは?
739デフォルトの名無しさん:2008/07/13(日) 20:40:02
>>737
tangoはGCや配列キャストなどの言語の基幹部分も独自に持っていて、
phobosを置き換えるのが目的で作られてるから、共存できなくて当然。
740デフォルトの名無しさん:2008/07/13(日) 21:39:01
>>736
切り詰めて87文字
しかも数字が表示できない、中括弧使うと文字増えるしなぁー
import std.stdio;void main(){int i;while(i++<100)writef(i%3?"":"Fizz",i%3?"":"Buzz");}
741デフォルトの名無しさん:2008/07/13(日) 21:44:04
>>740
printf使えばもっと短くできるんじゃない?
742デフォルトの名無しさん:2008/07/13(日) 21:55:04
>>739
じゃあphobosが言語の基幹とライブラリの機能分担に失敗してる?
743デフォルトの名無しさん:2008/07/13(日) 22:21:54
>>741
これで99文字
void main(){for(int i;i++<100;)printf("%.*s%d",(i%3?"":"Fizz")~(i%5?"":"Buzz"),!(i%3&&i%5)?0:(i));}
こっちが別案(100文字ジャスト)
void main(){int i;char[]s;while(i++<100)printf("%.*s%d",s=(i%3?"":"Fizz")~(i%5?"":"Buzz"),s?0:(i));}

どっちもゴミが入るし83文字なんて…
744デフォルトの名無しさん:2008/07/13(日) 23:16:42
>>732
D言語研究室にファイバあった。
前に試したけど、ファイバの部分だけならコンパイル通るようにするのはそれほど難しくない。
745デフォルトの名無しさん:2008/07/14(月) 01:40:53
d で windows アプリケーションを作るときに XP のビジュアルスタイルを当てる方法をおしえてください
746デフォルトの名無しさん:2008/07/14(月) 02:13:17
マニフェスト作ればいいんじゃないの。
詳しくしらんが。
747デフォルトの名無しさん:2008/07/14(月) 02:26:09
%03dとかやれる関数ってないっすか。
748デフォルトの名無しさん:2008/07/14(月) 02:35:44
std.string.format
749デフォルトの名無しさん:2008/07/14(月) 03:12:25
std.c.stdio.sprintfでおk
750デフォルトの名無しさん:2008/07/14(月) 03:53:45
tangobos で tango と phobos を同時に使うと、無駄に富豪的な気分がするぜ
751デフォルトの名無しさん:2008/07/14(月) 08:10:02
tangoではないんでしょうか。

char[] format(char[] format, ...)
{
Sprint!(char) sp = new Sprint!(char);
return sp.format(format, _arguments, _argptr);
}
とかやっても%がそのまま出力されちゃうんですが。
752デフォルトの名無しさん:2008/07/14(月) 08:34:12
>>751
tangoのフォーマットはC#と同じなのでそのようにやると良い。
753デフォルトの名無しさん:2008/07/14(月) 10:31:52
>>750
同時につかえるやつなんだ!しらんかった
両ライブラリの最新に対応してるのかなぁ
てかObjectクラスが違うはずなのに大丈夫なのかな
754デフォルトの名無しさん:2008/07/14(月) 13:25:00
tangoの方のオブジェクトが使われるはず。

問題が出たとしても、そういうことの解決をやるのがtangobosっていう擦り合わせのプロジェクトですよ。
755デフォルトの名無しさん:2008/07/14(月) 13:43:00
やっぱ、tangobosって方向性として間違ってるよなw
756デフォルトの名無しさん:2008/07/14(月) 14:09:00
>>745
main.exeが実行ファイルだとしたら、以下の内容をmain.exe.manifestとして保存して実行ファイルと同じフォルダに入れておけば、どんな言語で作ってもXPビジュアルスタイルになる。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
name="main"
processorArchitecture="x86"
version="1.0.0.0"
type="win32"/>
<description>main</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
757デフォルトの名無しさん:2008/07/14(月) 15:07:12
>>752
そうだったんですか。
ありがとうございました。
758デフォルトの名無しさん:2008/07/14(月) 21:04:15
こんなところ見つけた。
http://www5.atwiki.jp/yaruhara/pages/74.html
759デフォルトの名無しさん:2008/07/14(月) 23:56:39
>>758
かなり気合入ってるな
760デフォルトの名無しさん:2008/07/15(火) 05:11:03
ディレクトリ系の例外拾うと、システムの日本語が入ってるせいか文字化けするんですが、
誰か治し方しりませんか。
761デフォルトの名無しさん:2008/07/15(火) 07:04:24
連投ですいません。
auto http = new HttpClient( HttpClient.Get, "http://localhost/test.jpg" );
http.open();
HogeClass _this = this;
DataOutput stream = new DataOutput(new FileOutput( this.current.toString()~"hoge.jpg" ));
if( http.isResponseOK )
{
int len = http.getResponseHeaders.getInt( HttpHeader.ContentLength, int.max );

http.read( (void[] data)
{
stream.write(data); //○
_this.addPicture(data);//X
_this.last = data;//X
}, len );

}
stream.flush();
stream.close();
http.close();

Dlした画像のデータをvoid[][]dataで保存しておきたいのですが、
無名関数を出たとたんにDLしたデータが壊れてしまってるようです。

何が駄目なんでしょうか?
762デフォルトの名無しさん:2008/07/15(火) 07:24:41
dataをdupしたら解決しそうな気がする
763デフォルトの名無しさん:2008/07/15(火) 07:36:56
だめですた・・・・・
764デフォルトの名無しさん:2008/07/15(火) 07:46:32
voidはどうすればキャストとかできるんでしょうか。
中身をのぞいてみようと思ったんですが、何にもキャストができません。
あと、
無名関数内の引数dataのlengthは1716でlenは4323でした。
765デフォルトの名無しさん:2008/07/15(火) 10:28:28
Voidはキャスト可能でした><
766デフォルトの名無しさん:2008/07/15(火) 11:03:14
>>760
再現コード
767デフォルトの名無しさん:2008/07/15(火) 13:02:20
>>764
無名関数が複数回呼ばれることを理解してない、ということかな?
無名関数内の引数dataは実際のデータが小分けになっている。
複数回呼ばれたときのdataを全部連結すると、お望みのデータになるよ。
768デフォルトの名無しさん:2008/07/16(水) 01:25:29
>>767
おおおおう。
できました。


ありがとうございました。
769デフォルトの名無しさん:2008/07/16(水) 05:35:23
FizzBuzz書いてみた
http://codepad.org/zAwWfbs7

codepadはmetastrings使えないんだな
tangobos使ってるみたいだがバージョンが古いんだろうか
770デフォルトの名無しさん:2008/07/16(水) 11:58:19
>769
std.string.toString() 使えば、toStr 要らなくね?
771デフォルトの名無しさん:2008/07/16(水) 13:12:32
772デフォルトの名無しさん:2008/07/17(木) 15:20:06
配列の末端から取り出すのって皆さんどうやってますか?
773デフォルトの名無しさん:2008/07/17(木) 15:45:37
リバースして、ふぉーいーちにかけるか、ふぉーで配列の要素数-1から逆順でとる。
それ以外ってあるかなぁ。
774デフォルトの名無しさん:2008/07/17(木) 15:52:21
foreach_reverseがあるのに,なんでわざわざreverseするのん?
775デフォルトの名無しさん:2008/07/17(木) 22:21:55
/home/d/dsss/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../libDG-tango-io.a(tango.io.Conduit.o): In function `_D5tango2io7Conduit7Conduit5errorMFAaZv':
Conduit.d:(.text+0x134): undefined reference to `_D5tango4core9Exception11IOException7__ClassZ'
Conduit.d:(.text+0x151): undefined reference to `_D5tango4core9Exception11IOException5_ctorMFAaZC5tango4core9Exception11IOException'
/home/d/dsss/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../libDG-tango-io.a(tango.io.Buffer.o): In function `_D5tango2io6Buffer6Buffer5errorMFAaZv':
Buffer.d:(.text+0x1580): undefined reference to `_D5tango4core9Exception11IOException7__ClassZ'
Buffer.d:(.text+0x159d): undefined reference to `_D5tango4core9Exception11IOException5_ctorMFAaZC5tango4core9Exception11IOException'
collect2: ld はステータス 1 で終了しました
Command /home/d/dsss/bin/rebuild returned with code 65280, aborting.
Error: Command failed, aborting.

これはいったい何をぐぐったらわかるんでしょうか。
776デフォルトの名無しさん:2008/07/18(金) 00:48:33
>>775
ldの引数で、-lDG-tango-ioの右側に-lDG-tango-coreが書いてない、ということだな、そのエラーメッセージは。
ldはライブラリの依存関係に沿って引数を書かないとリンクエラーになる。
777デフォルトの名無しさん:2008/07/18(金) 09:24:16
>>773
うそだろ
v[$-1]じゃねーの!?
778デフォルトの名無しさん:2008/07/18(金) 10:09:25
>>777
おまえは何を言っているんだ。
779デフォルトの名無しさん:2008/07/18(金) 10:43:50
>>778
777じゃないが俺が代弁しよう。きっとこういいたかったに違いない。
while (v.length)
{
func(v[$-1]);
v.length = v.length-1;
}
780デフォルトの名無しさん:2008/07/18(金) 11:24:50
>>779
お前凄いな。
781777:2008/07/18(金) 13:13:09
>>778
ごめん、末端から「順に」取り出すのね。
勘違いしてました

>>779
エスパーすぐる!
フォローまでしていただいて・・・
782773:2008/07/18(金) 16:54:03
foreach_reverseって実装されてたのか。
ROMってるだけだと疎くなっちゃうね。正直すまんかった。
783デフォルトの名無しさん:2008/07/18(金) 18:38:34
かなり昔からある気がするが…
784デフォルトの名無しさん:2008/07/18(金) 20:09:01
>>776
使ってるのはdsssなんですが、直すにはどの辺り調べるといいんでしょうか
785776:2008/07/19(土) 00:21:44
>>784
dsssは使ってないから、正確なところはわからない。
もし、読み込んでいるdsss.confにbuildflags=-llDG-tango-core -llDG-tango-io ... のような記述があるなら、書いてあるライブラリの順番が問題なので、それを依存関係に沿って(左のライブラリが右のに依存するように)並び替えればよいのだけど……。
786デフォルトの名無しさん:2008/07/19(土) 22:25:32
Cと比べてどっちが速いの?
787デフォルトの名無しさん:2008/07/19(土) 22:40:32
>>786
・両方ネイティブコード吐くし、どっちがあらゆる面で速いとは言えない。
・メモリ周りはGCある言語のほうが現実的に速くなるよ、と公式では主張されている
・コンパイル速度はDのほうが遙かに速い
・VC++なんかの商用コンパイラのほうが最適化は賢い(んじゃね?
・最適化部は同じだろうし、dmdならdmcと、gdcならgccと同じようなパフォーマンスになる(んじゃね?

下二つは適当。
788デフォルトの名無しさん:2008/07/19(土) 22:51:01
マイクロベンチマークでは、GCC相手でけっこう良い勝負をする
(ICCとかVC++になるとどうだろうか)
ただ最近のバージョンになると速度がやや落ちたみたい
ttp://shootout.alioth.debian.org/gp4/d.php
ttp://shootout.alioth.debian.org/debian/d.php

Dは本質的にかなり速度が出そうな言語ではある
コンパイラ屋が再設計したC++みたいなもんだから
789デフォルトの名無しさん:2008/07/19(土) 23:24:50
>>786
向き不向きがあるけど、開発速度はDのほうが圧倒的に早い…
という比較があった気がした。
ある課題をいろんな言語で解くコンテストがあって、それでDがGCと契約のおかげでいい成績出したって内容だった気がする
790デフォルトの名無しさん:2008/07/20(日) 02:07:08
実行速度はライブラリの差が大きいだろうな
複雑な数値計算とかなると、もう
791デフォルトの名無しさん:2008/07/20(日) 16:41:09
>>789
C++でどうしても生産性があげれなかったヘタレな俺
現状どうみても D>>C++ です。 本当にありがとうございます。
792デフォルトの名無しさん:2008/07/21(月) 11:41:00
IDE欲しくてDescentに挑戦したけど、どうにもコンパイルできなかった。
143あたりの手順も試してみたけどダメだった。結局makeに逆戻りしちゃった。
なんか導入しやすいIDEないかな?2.0系使えるやつ
793デフォルトの名無しさん:2008/07/21(月) 14:32:18
Poseidon
794デフォルトの名無しさん:2008/07/21(月) 19:35:25
gdc(mingw)0.24でgc_initを呼ぶと即座に落ちる。
_minitもundefinedと言われるし・・・

Win32 のサンプルが動かないとか心が折れそう。
795デフォルトの名無しさん:2008/07/21(月) 23:59:48
>>794
WinMainを使わずにmainを使えばいい。
インスタンスハンドルが欲しければGetModuleHandleで得られるし。
796794:2008/07/22(火) 00:15:22
>>795
本当はDLLを作りたいんだけど、DllMainのgc_initでこけてたので、
前段階としてWinMainで実験してみて、うまくいってないという話。
DLL以外ならmainでいいんだけどね。
紛らわしくてスマソ。
797デフォルトの名無しさん:2008/07/22(火) 13:08:40
798デフォルトの名無しさん:2008/07/22(火) 14:26:04
> Ignore all the people who tell you it can't be done.
> Telling you it can't be done means you're on the right track.

らしいですよ。
799794:2008/07/22(火) 20:06:30
自己解決。
スレ汚し失礼しました。
800デフォルトの名無しさん:2008/07/22(火) 21:18:13
自己解決したらちゃんと解決方法も書きなさい
801794:2008/07/22(火) 21:21:15
802デフォルトの名無しさん:2008/07/23(水) 18:22:54
http://www.vimeo.com/1364875
http://www.n-brain.net/
これ使ったことある人いるかな
803デフォルトの名無しさん:2008/07/23(水) 18:26:45
うお、まだ配布されてなかった
すまn
804デフォルトの名無しさん:2008/07/23(水) 19:58:27
>>797
そういえばウォルタンの顔を見たことがなかったという衝撃
805デフォルトの名無しさん:2008/07/23(水) 21:59:17
髭がないのがD言語普及の妨げになってるんだよな。
806デフォルトの名無しさん:2008/07/23(水) 22:06:10
807デフォルトの名無しさん:2008/07/23(水) 22:13:17
やはりここはウォルたんにも髭を・・・・・
808デフォルトの名無しさん:2008/07/23(水) 22:14:59
>>806
ハゲである必要はないんか?
809デフォルトの名無しさん:2008/07/23(水) 22:16:45
ハゲると言語仕様が複雑に・・
810デフォルトの名無しさん:2008/07/23(水) 22:19:03
ウォルたんの頭髪大ピンチ!
811デフォルトの名無しさん:2008/07/24(木) 06:13:13
髭を剃ることを暗に明に強制されるような環境で、
好きに言語を設計するような仕事はできないという点では明察なんだよな。
その意味でウォルたんは好きに言語を設計してると思うから問題ない
812デフォルトの名無しさん:2008/07/24(木) 06:36:53
いくらなんでもこじつけだろと思ったが三行目で吹いた。
確かに好きに設計してるなwwww
813デフォルトの名無しさん:2008/07/24(木) 09:34:07
をるたん・ぶらいと
814デフォルトの名無しさん:2008/07/24(木) 10:55:23
うぉるたんって60才ぐらい?
815デフォルトの名無しさん:2008/07/24(木) 12:46:45
永遠の17歳
816デフォルトの名無しさん:2008/07/24(木) 15:21:05
>814
http://www.walterbright.com/ によると
「1979年にカリフォルニア工科大を卒業した」そうだから、
50代前半じゃね?
817デフォルトの名無しさん:2008/07/24(木) 15:21:06
caltechを1979に卒業と書いてあるので、
だいたい50〜55くらいの範囲だな
818デフォルトの名無しさん:2008/07/24(木) 18:31:20
仲いいなお前らwww
819デフォルトの名無しさん:2008/07/24(木) 18:35:16
この一連の流れを/.本家へ投稿してみたいところだな
820デフォルトの名無しさん:2008/07/24(木) 22:48:31
>>819 やめろww
821デフォルトの名無しさん:2008/07/25(金) 00:00:46
バージョンアップがこなさすぎる…
最後にリリースされたのいつだよ…
822デフォルトの名無しさん:2008/07/25(金) 00:24:30
一連の流れから分かったこと
・D言語に足りないのは髭
823デフォルトの名無しさん:2008/07/25(金) 01:17:17
じゃあ今度からD言語ではhogeの代わりにhigeを使えばいい、というわけか。

module walter.hige;
int hige(){ return 0; }
824デフォルトの名無しさん:2008/07/25(金) 01:22:24
じゃあDのマスコットキャラに髭つけようぜ
825デフォルトの名無しさん:2008/07/25(金) 01:36:39
かっけーじゃん
826デフォルトの名無しさん:2008/07/25(金) 01:38:17
髭の長さ=Dのバージョン
827デフォルトの名無しさん:2008/07/25(金) 02:59:06
Visual studio並のIDE欲しい・・・
828デフォルトの名無しさん:2008/07/25(金) 03:46:48
IDEがあればD言語かつる
っていうか今や普及にIDEは必須だぜ・・・
829デフォルトの名無しさん:2008/07/25(金) 04:06:17
830デフォルトの名無しさん:2008/07/25(金) 09:45:47
struct type
{
  typeof(this) opAssign(type other)
  {
    return this;
  }
}

int main()
{
  type[string] map;
  type hoge;
  map["name"] = hoge;//Error :ArrayBoundsError

  return 0;
}

何でエラーになるの?教えてエロい人!
831デフォルトの名無しさん:2008/07/25(金) 12:03:32
=演算子が関数呼び出しにハイジャックされてるからじゃねーの?
832デフォルトの名無しさん:2008/07/25(金) 12:34:35
>>821 この間2.017がでたところじゃないか
833デフォルトの名無しさん:2008/07/25(金) 12:42:40
VSのプラグインみたいなのでどこまでできるの?
前にインテリセンスをがんばってた人がいたけれど.
834デフォルトの名無しさん:2008/07/25(金) 13:30:31
IDEなんて不要。何の役にも立たない。
そんなのにリソース割かれてコンパイラの完成遅れられたら困る。
835デフォルトの名無しさん:2008/07/25(金) 13:38:59
完成・・・だと・・・ッ!?
836デフォルトの名無しさん:2008/07/25(金) 13:54:21
>>830
 map["name"] = hoge;

 map["name"].opAssign(hoge);
と解釈される。

map["name"]でエラー
837デフォルトの名無しさん:2008/07/25(金) 16:20:50
>>835 そもそも完成なんて概念は存在しないというのは言ってはいけないのかもしれんが言っちゃった
838デフォルトの名無しさん:2008/07/25(金) 17:31:44
>>834
別にウォルたんに作れとは言わんw
839デフォルトの名無しさん:2008/07/25(金) 18:49:49
>>835
>>797より
>Do you still consider D to be a language "under development"?
>  A language that is not under development is a language that is not being used.
>  D is under development, and will stay that way as long as people use it.
>  C++, Java, Python, PERL, etc., are also widely used and are still under development.
「IDE? もうあるじゃん」的な発言からも分かるように、なんとなく、
うぉるタンにはDをみんなに広めてやろうっていう野心が足りないんだな。
840デフォルトの名無しさん:2008/07/25(金) 18:54:57
生粋の技術屋なんだな
841デフォルトの名無しさん:2008/07/25(金) 19:15:06
うぉるたんには髭の生えた参謀役が必要なんだな
842デフォルトの名無しさん:2008/07/25(金) 22:14:45
Tango 0.99.7 Dominik released
843デフォルトの名無しさん:2008/07/26(土) 00:18:53
Dらしいboost::tupleを作ったはいいけど、コード補完のメンバ一覧が出たとたんIDEが落ちるw
844デフォルトの名無しさん:2008/07/26(土) 00:27:03
このスレよりもD言語について盛んに議論されてる場所ってある?
少なくともうぉるたんについてはこのスレが一番だと思うが。
845デフォルトの名無しさん:2008/07/26(土) 02:08:44
日本にはないと思う
846デフォルトの名無しさん:2008/07/26(土) 02:25:29
D1.028 phobos の std.cover の setDestDir(char[]) 関数なんだけど、

void setDestDir(char[] pathname)
{
 srcpath = pathname;
}

になってるんだけど、

 dstpath = pathname;

だとおもうんだ。
みんなの環境はどう?
847デフォルトの名無しさん:2008/07/26(土) 03:09:49
>846
2.017のPhobosでも同様になってる。
よく見つけた。Bugzillaへ行っとけ!
848デフォルトの名無しさん:2008/07/26(土) 12:36:58
>847
アカウント無いし、作りたくないから頼んだ。

dstpath を修正しても何の効果もないからなんとかしろーってのもいっといてplz
849デフォルトの名無しさん:2008/07/26(土) 13:08:04
めんどくさ
std.coverなんて使ってないしどうでもいい
850デフォルトの名無しさん:2008/07/26(土) 20:00:08
ながれにWWWW
851デフォルトの名無しさん:2008/07/26(土) 22:46:01
最近、D言語を勉強しようかなーと悩んでるんだが
D言語ラブな人にD言語の魅力を語ってほしい

ちなみに今までは、基本的にスクリプト言語(Ruby)でいろいろやってました
C言語は大学の演習のみ、C++やC#は未経験
852デフォルトの名無しさん:2008/07/26(土) 23:57:33
>>851
Rubyで間に合ってたならそっち使ってた方がいいと思う
D言語の凄まじさはC++をある程度やってないとわかりにくいんじゃないかな?

API叩きたいとかでも色々ポーティングしなきゃならない状況だからね〜
853デフォルトの名無しさん:2008/07/27(日) 00:03:40
ruby使ったこと無いから具体的に比べてはワカンネ(実際のところスクリプトメインに使ってて不満がないならrubyと比べてのメリットは少ないんじゃね? という気はする)
一般的な部分では、スタンドアロンの実行ファイルとか、ネイティブ吐く故の速度とかか。必要ないなら必要ないかなあ。

でも個人的に最大の魅力は更新待ちのwktk感。
既存のコード通らなくなる変更躊躇わないからなうぉるたん。標準ライブラリが壊れたりするんだぜ?
(ちなみに当方ややM)(でもこのスレに仲間は多いと思ってる)
854デフォルトの名無しさん:2008/07/27(日) 00:31:44
Ruby使いこなせてるなら、Rubyで十分。
スクリプト言語以外をそんなに触ってないなら、静的型付けとかの不自由さを感じるかも。

Dの良いところはスクリプト言語でもないのに、いろんな機能を使えるところ。他の言語に比べて多機能だと思う。
855デフォルトの名無しさん:2008/07/27(日) 00:38:15
>>851
俺の場合、WindowsとLinuxの両方で使うというのがあったから、Dという選択になった。

Windows環境だけというのなら、C#の方がライブラリその他安定していて、いいと思う。
散々言われていた起動の遅さも、いつの間にか気にならないくらい速くなってるし。

ただ、LinuxのmonoはD以上に地雷が多すぎなんで、マルチプラットホームならDかなと。
C++はコンパイル速度が速ければ使うんだが、Dの速さに慣れちゃうとその遅さに耐えきれなくなってしまう。

まあ、上記はC並に速く実行する言語が使いたいという前提あっての話だから、多少遅くてもいいというのであれば、Javaでもいいのかもしれない。

Dの欠点は標準ライブラリが信用できないこと。
標準ライブラリを自力で何とかできないとDを扱うのは難しい。
856デフォルトの名無しさん:2008/07/27(日) 00:41:46
>>853
> でも個人的に最大の魅力は更新待ちのwktk感。

ナカーマ
857デフォルトの名無しさん:2008/07/27(日) 00:47:04
通らなくなったコードを逐一直してまったくもううぉるたんたらおちゃめなんだからぁ的なアレ
858デフォルトの名無しさん:2008/07/27(日) 00:53:39
仕事仲間には絶対したくないけどねっ
859デフォルトの名無しさん:2008/07/27(日) 01:12:52
参照型をサポートする
タプルを関数から返せるようにする
opCastをまともにする

うぉるたん頼むからこのへん実装してくれ><
860デフォルトの名無しさん:2008/07/27(日) 01:57:43
>>859 参照型ってなんぞ
861デフォルトの名無しさん:2008/07/27(日) 02:00:40
int& a;

みたいなやつじゃね
862デフォルトの名無しさん:2008/07/27(日) 02:17:44
<俺:妄想>

int a;
ref(int) b = a; // 型コンストラクタ

ref(int) func(ref int p) { // 参照渡し・参照戻し
return p;
}

auto c = func(a); // is(typeof(c) == ref(int))

</俺:妄想>
863デフォルトの名無しさん:2008/07/27(日) 02:18:38
htodをもう少しどうにかしてほしいな。
手直し箇所が多すぎて、気軽にCのライブラリを使いたいと思えない。
864デフォルトの名無しさん:2008/07/27(日) 04:31:45
Tangoユーザの方0.99.7はどうよ?
865デフォルトの名無しさん:2008/07/27(日) 04:36:28
>>848-849
ttp://f17.aaa.livedoor.jp/~labamba/?BugTrack
とりあえず張っておくからw
866デフォルトの名無しさん:2008/07/27(日) 05:14:19
>865
まかせた
867デフォルトの名無しさん:2008/07/27(日) 06:19:14
>>864
とりあえずなんかMemory.diでエラーが出る。
ちょっとソースのぞいてみたらなんか明らかにおかしいところがあった

130: enum BlkAttr; : uint
131: {
868デフォルトの名無しさん:2008/07/27(日) 08:29:18
まったくDの開発陣は・・・テスト自動化しろよな
せっかく言語がunittestとかDbCとか用意してるのに全然活用してないじゃん
うぉるたんがたまにテスト通さないのは破壊的な変更しまくるからだろうけど
869851:2008/07/27(日) 12:55:38
いろいろな意見ありがとうございます
とりあえず、更新を待ってwktkする言語だというのは伝わってきた
面白そうなので少し触ってみようと思います
870デフォルトの名無しさん:2008/07/27(日) 15:43:10
もし、うぉるたんが死んだり、引退したりしたら、Dも終わるのか?
うぉるたんの跡を継ごうっていう人は出てくるのだろうか。
871デフォルトの名無しさん:2008/07/27(日) 15:46:19
きっとD++がでるよ。
872デフォルトの名無しさん:2008/07/27(日) 16:18:50
>>868
激しく同意。単体テスト用意しれと思うなぁ。
復帰テストはしているようだけど膨大だからかなりの時間かかってそうだし。
873デフォルトの名無しさん:2008/07/27(日) 16:23:25
単体テスト以前にコンパイルしてないんじゃ…
874デフォルトの名無しさん:2008/07/27(日) 19:26:32
>>862
それは
static int a;や
int* a;と似たような宣言で
ref int b; がスマートな気がする

その場合は
a == c って事でいいのかな

ポインタを使わないようにした代わりにこれがあればポインタの代用がかなり効きそうだな
GC周りに矛盾が生じないなら入れてほしいな
875デフォルトの名無しさん:2008/07/27(日) 19:45:10
>>874
 int* a;
はどっちかっていうと、
 const int a; // constは変数を修飾
よりは
 const(int) a; // constは型を修飾
に近いんじゃない?

それで、refは変数の情報な気がするから、ref(T)はいらないと思う。
876デフォルトの名無しさん:2008/07/27(日) 19:58:19
dmd2.017 + dsource.org->Win32api Bindings
で、ウィンドウプロシジャの中から例外を投げて、
main関数に書いたcatchで拾おうとすると失敗するんだけど、こういうもんだっけ?
877デフォルトの名無しさん:2008/07/27(日) 20:03:18
>>876
そういうもん。

コードの流れは、
メッセージループ -> | user32 | -> ウィンドウプロシージャ
なんで、例外は戻ってこれない。
878876:2008/07/27(日) 20:17:30
>>877
即レス感謝。
前いけてた気がしたのは漏れの気のせいでした。
べんきょんなったす。
879デフォルトの名無しさん:2008/07/27(日) 20:55:11
えぇぇ、メッセージループの外のcatchで例外とれてるんだけどこれは何?
880デフォルトの名無しさん:2008/07/27(日) 20:56:21
writeflnとかで自動的にtoString()が呼び出されると、メンバのアドレスが変っちゃうんだけどなぜ?
明示的に呼び出せば、そんなことにはならなかった
アラインメントの問題?GCの問題?
881デフォルトの名無しさん:2008/07/27(日) 21:01:53
>>880
コード付きで頼む
882880:2008/07/27(日) 21:34:07
値渡しされてるだけだったorz 正直すまんかった

>>881
ちなみに双方向リンクリスト、つまりSTLのlistみたいなやつ
883デフォルトの名無しさん:2008/07/27(日) 22:46:18
Dの頭のままC#でdelegate使おうとしたら
いちいち宣言しなきゃいけないって面倒だなとおもた
884デフォルトの名無しさん:2008/07/27(日) 22:49:31
>>883
ラムダ式でおk
885デフォルトの名無しさん:2008/07/27(日) 23:03:16
C#3.0からFunc<,>とか使えるんじゃなかったっけ。
886デフォルトの名無しさん:2008/07/28(月) 00:33:49
GTK On Dって名前にすれば GOD ってライブラリ名にできるのにそういう風にしないのは
やはり向こうは日本と神の感覚が違うから気軽に使えないのかな
887デフォルトの名無しさん:2008/07/28(月) 00:57:59
こういう場合onっていう言い方は正しいのか?
あんまり聞かない気がする。
888デフォルトの名無しさん:2008/07/28(月) 01:01:34
じゃ featuring だ
889デフォルトの名無しさん:2008/07/28(月) 01:04:05
overとか
890デフォルトの名無しさん:2008/07/28(月) 01:08:01
ならopponだ
… oppon 〜は「…を〜と組み合わせて」という意味になる今作った単語
891デフォルトの名無しさん:2008/07/28(月) 01:14:40
oppai
なんでもできる証拠なの〜
892デフォルトの名無しさん:2008/07/28(月) 01:28:19
GTK of D
893デフォルトの名無しさん:2008/07/28(月) 02:01:32
Tango の 0.99.7 でバックスラッシュを含んだパスが蹴られるようになったけど、さすがに面倒だぜ。
import tango.io.Console;
import tango.io.FileSystem;
import Path = tango.io.Path;
void main(char[][] args) {
  auto dir = Path.parse(FileSystem.toAbsolute(Path.standard(args[0]))).path;
  Cout(dir).newline;
}
自分の実行ファイルのディレクトリのフルパスが欲しいとき、もうちょと短く書けないかな。
894デフォルトの名無しさん:2008/07/28(月) 05:11:20
http://www.digitalmars.com/d/archives/digitalmars/D/dwt/
dwtのはずなのにアナウンス
中身はちゃんと別みたいだけど
895デフォルトの名無しさん:2008/07/28(月) 16:00:33
std.openrjって、どうしてあるの?誰が使ってるの?
というか、動かないんだけど
896デフォルトの名無しさん:2008/07/28(月) 16:15:14
もうなくなるor/andなくなったんじゃなかったのか
897デフォルトの名無しさん:2008/07/28(月) 17:49:37
>893
記述が長ったらしい代わりにバイナリが小さくなるのがTangoの芸風でしょ。
ちなみにPhobosなら import path; して dirname(rel2abs(args[0])) だ。
898デフォルトの名無しさん:2008/07/28(月) 23:53:45
1.0 と 2.0 の違いって何?

C# の 1.0 と 2.0 ぐらいちがったりするの?
899デフォルトの名無しさん:2008/07/29(火) 00:03:46
dmd1 致命的なバグが無い限り更新されない
dmd2 前進的で素晴らしい変更によってソースを書き直す必要が出来る

このスレを読む限りMは2を使った方がいいらしいぞ
900デフォルトの名無しさん:2008/07/29(火) 00:10:10
最近はライブラリも2に対応してるし、1を使う理由ってあんまない気がするなあ。
安定性求めるなら他の言語を当たったほうがいいだろうし。
901デフォルトの名無しさん:2008/07/29(火) 00:20:34
DMDScriptが使いたいだけで1使ってます
902デフォルトの名無しさん:2008/07/29(火) 00:26:29
変更点そのものは、
http://www.kmonos.net/alang/d/2.0/features2.html
に出てる。
903デフォルトの名無しさん:2008/07/29(火) 02:02:27
>>900
喧嘩売られてるような気がするのは俺の気のせいだろうな
移行しない理由が聞きたいんだよな
904デフォルトの名無しさん:2008/07/29(火) 02:04:10
何が言いたいのかさっぱり理解できない
905デフォルトの名無しさん:2008/07/29(火) 02:12:21
gdc(mingw)をうまくビルドできるならば
2.0に乗り換えてみたいところだがね。
エラーが回避できなくてあきらめた。
906デフォルトの名無しさん:2008/07/29(火) 07:38:52
>>903
どう考えても気のせいです
907デフォルトの名無しさん:2008/07/29(火) 07:39:36
>>902
popenだけはdmd1にも入れてほしい
908デフォルトの名無しさん:2008/07/29(火) 09:38:02
ところでお前ら typeof(*this)って使ってるかな?
クラス名とどっちがいい?
909デフォルトの名無しさん:2008/07/29(火) 11:51:29
ジェネリックコードじゃなければクラス名の方がいい
時期尚早な過最適化は悪 by Effective C++ ?
910デフォルトの名無しさん:2008/07/29(火) 11:57:08
TangoやDWTが1にしか対応してないから2使えない、って人もいるんじゃね。

>909
"premature optimization is the root of all evil." なら、出典はKnuth様 (1974年)。
911デフォルトの名無しさん:2008/07/29(火) 12:46:20
先進的な変更で言語がよくなってそれと同時に自分のコードがかっこよくなる
この喜びが毎月のように得られるのはDくらい
それが私がDを使う理由・・・信じて
912デフォルトの名無しさん:2008/07/29(火) 14:28:09
static foreachまだなのかなあ。
そんな複雑な変更でもない気がするんだけど、
うぉるたんは他にやりたいことあるんだろうか。
913デフォルトの名無しさん:2008/07/29(火) 16:13:48
DMDってテンプレート再帰でタプル作るとホントすごいメモリ喰うな…
914デフォルトの名無しさん:2008/07/30(水) 00:59:01
D言語はアセンブリの夢を見るか
915デフォルトの名無しさん:2008/07/30(水) 22:25:38
gc切って、delegateぶん回したらすんごいメモリをくう・・・
あたりまえかもしれんが、scopeとかで回避できんから
すんごい困った
916デフォルトの名無しさん:2008/07/31(木) 00:26:38
http://www.dsource.org/projects/blaze

これのDemoすごいなあ
917デフォルトの名無しさん:2008/07/31(木) 00:42:39
あ、これ俺も遊んだwww
結構楽しいんだよなこれ
918デフォルトの名無しさん:2008/07/31(木) 01:49:17
PC初期に近いの面白さだよね。
919デフォルトの名無しさん:2008/07/31(木) 02:24:57
俺の1時間を奪う憎い奴だ
920デフォルトの名無しさん:2008/07/31(木) 08:26:23
template Hoge(){
if(true){}
}
void f(){
mixin Hoge!()
}
なんでif使えないの〜泣
921デフォルトの名無しさん:2008/07/31(木) 08:34:29
>>920
つ static if
922デフォルトの名無しさん:2008/07/31(木) 11:35:46
template mixin は宣言しか書けないのね
923デフォルトの名無しさん:2008/07/31(木) 12:43:23
Lisper
C++er


Der
なんちゃって、えへへ
924デフォルトの名無しさん:2008/07/31(木) 13:02:18
>923
PythonistaにならってDistaはどう?
すくなくとも発音はしやすいよw
925デフォルトの名無しさん:2008/07/31(木) 13:41:25
typeof(*this) opDot()
{
    return *this;
}
926デフォルトの名無しさん:2008/07/31(木) 14:36:01
痔主多?
やDなぁそんなの
927デフォルトの名無しさん:2008/07/31(木) 15:33:24
D Langer
928デフォルトの名無しさん:2008/07/31(木) 16:08:02
グローバル変数をスレッド間で共有できないのをディフォルトにしよう、
という案を検討してるらしい。
http://bartoszmilewski.wordpress.com/2008/07/30/sharing-in-d/

これだと現行のコーディングとはスタイルが随分かわっちゃうけど、
マルチスレッドの安全性を考えたら良い案だと思う。
929デフォルトの名無しさん:2008/07/31(木) 17:00:35
>>924
Dildo
発音しやすいよ
930デフォルトの名無しさん:2008/07/31(木) 17:12:17
1Der

2Der
931デフォルトの名無しさん:2008/07/31(木) 17:17:02
3ダー!!
932デフォルトの名無しさん:2008/07/31(木) 17:32:21
猪木?
933デフォルトの名無しさん:2008/07/31(木) 18:00:29
>>928
むしろグローバル変数いらなくね?
あと例えばプロパティはsynchronized付きになるとか(俺には善し悪しがよくわからんけど)
これからのマルチコアの世界に向けて最適化していった方がいいのかも
934デフォルトの名無しさん:2008/07/31(木) 18:17:45
locklessがもてはやされる時代に標準でsynchronized付きとか狂気の沙汰としか。
935デフォルトの名無しさん:2008/07/31(木) 18:33:27
そういうもんか
マルチスレッドプログラミングの安全性ももっとコンパイル時に保証できないのかな
936デフォルトの名無しさん:2008/07/31(木) 22:24:48
各スレッドが触る変数を確定できるかどうかが勝負という感じかなあ。
pureなら触る変数はプロシージャからのスタックの積み方で決まるから、
そのへんはもう少し楽になる気がする
937デフォルトの名無しさん:2008/08/01(金) 00:14:52
Martianじゃないか?いろんな意味で。
938デフォルトの名無しさん:2008/08/01(金) 00:24:55
static typeof(this) opCall(T...)(T args)
{
    return new typeof(this)(args);
}
newすら書くのが面倒。そんなあなたに
939デフォルトの名無しさん:2008/08/01(金) 00:26:02
pure判定が通るなら原則として大丈夫だと思う。副作用がないということだし。
もうすこし緩めるとスレッドローカル変数しか触らなければ安全だと思うが、これは未実装。
940924=928:2008/08/01(金) 01:51:55
>937
ああ、そっちの方が全然いいですね。

ところでGtkDのRC1が8月1日リリース予定なわけだがwktk
941デフォルトの名無しさん:2008/08/01(金) 15:00:45
こうか
template Constructor{
>>938
}
class A{
mixin Constructor;
}
void main(){ A x = A(); }
そういえばstructとclassをコンパチブルにできるのかなー
942デフォルトの名無しさん:2008/08/01(金) 18:37:17
構造体のコンストラクタってまだないの?
943デフォルトの名無しさん:2008/08/01(金) 19:04:45
>>942
ずっと無いと思うよ?
「構造体はPODであるべき」って頑なになってるから。

static opCallで代用するしかないんじゃね
944デフォルトの名無しさん:2008/08/01(金) 19:20:33
バグかなバグかな?

--- main.d ---
import func;
void main(){ line(); }

--- fund.d ---
void line(uint lineNum = __LINE__){ }


$ dmd main.d func.d
__LINE__
Internal error: e2ir.c 612
945デフォルトの名無しさん:2008/08/01(金) 19:22:41
いけね、ファイルを分けなくても再現した。

void line(uint lineNum = __LINE__){}
void main(){ line(); }
946デフォルトの名無しさん:2008/08/01(金) 22:10:27
2007年のカンファレンスで構造体にコンストラクタつけるとかなんとか言ってなかったか?
俺の記憶違いかな?
947デフォルトの名無しさん:2008/08/01(金) 23:16:19
リテラルあるしなあ……。
948デフォルトの名無しさん:2008/08/02(土) 01:59:50
gdcのsvnで手に入る一番新しいやつ。

std/c/windows/com.d

interface IUnknown
{
HRESULT QueryInterface(IID* riid, void** pvObject);
ULONG AddRef();
ULONG Release();
}

ではなくて、

interface IUnknown
{
static HRESULT QueryInterface(IID* riid, void** pvObject);
static ULONG AddRef();
static ULONG Release();
}

が正しいような気がする。
後者じゃないとビルドできないし。
949デフォルトの名無しさん:2008/08/02(土) 14:25:36
>>948
んなばかなあ
950デフォルトの名無しさん:2008/08/02(土) 14:35:23
>>948
何で前者でエラーになるのか知らないけど、staticは無いと断言できる。
951デフォルトの名無しさん:2008/08/02(土) 14:44:56
大体staticで何をカウントしてるんだ
952デフォルトの名無しさん:2008/08/02(土) 23:13:01
comが何なのか良く知らないので、
エラー回避のためにstaticにしたんだが、
やっぱりおかしいのか。

libphobos/std/c/windows/com.d:240: error: '*LTHUNK0' aliased to undefined symbol '_D3std1c7windows3com9ComObject14QueryInterfaceMWPS3std1c7windows3com4GUIDPPvZi'
libphobos/std/c/windows/com.d:240: error: '*LTHUNK1' aliased to undefined symbol '_D3std1c7windows3com9ComObject6AddRefMWZk'
libphobos/std/c/windows/com.d:240: error: '*LTHUNK2' aliased to undefined symbol '_D3std1c7windows3com9ComObject7ReleaseMWZk'

みたいなエラーがでるんだが、
LTHUNK0なんてソースのどこにも出てこないし謎。

試しにいろいろいじって、たまたまstaticにしたらうまくいったという話。

まあ、comプログラミングなんかしないから、
別に通ればなんでもいいのだが。
953デフォルトの名無しさん:2008/08/03(日) 13:39:36
さっきちょっと思いついたんだけど変数の変更を一時的に禁止する様な機能ある?

const(hoge, fuga)
{
// hoge, fugaは変更禁止
}
// 変更OK
954デフォルトの名無しさん:2008/08/03(日) 13:54:21
void main() {
int hage = 42;

(const typeof(hage) hage = hage) {
writeln(hage); // 42
hage++; // error
}();
}

dirtyすぎる…
955デフォルトの名無しさん:2008/08/03(日) 14:06:48
最近ここで晒されるソースを見ても何がなんだかです。
956デフォルトの名無しさん:2008/08/03(日) 14:17:12
>>953
pureとか予約語になってるんだし,要望したら入れてくれるんじゃね?
957953:2008/08/03(日) 14:41:00
>>954
バグ回避目的なのに手段が真逆に向かっている様なw
958デフォルトの名無しさん:2008/08/03(日) 15:09:29
なんか、バグが云々って言ってたので、
よくわかりませんが、つたない英語で投稿してみました。

http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.bugs&article_id=14747

適当なので、怒られてたり、意思が通じてなかったりしたら
すいませーんっと。
959デフォルトの名無しさん:2008/08/03(日) 15:14:46
ああ、bugzillaに投稿とかのほうがよかったんだろうなぁとか
思ったけど、いいや。やる気ないので、スマヌです。
960デフォルトの名無しさん:2008/08/03(日) 15:16:56
これじゃ、何かいてるかわからないな。
>846
>847
>848

ここらへんの話です。
暑くて駄目だwww
961デフォルトの名無しさん:2008/08/03(日) 16:13:57
一時変数の名前はhigeを使ってください
962デフォルトの名無しさん:2008/08/03(日) 16:43:12
>>953
既出みたいなもんだけど関数のconst引数じゃダメなの?
class A{const void pp(){}}
void f(const A a){
a.pp;
}
void main(){
A a = new A;
f(a);
}
963デフォルトの名無しさん:2008/08/03(日) 16:45:56
値型でもこう
int i=1;
g(i);
void g(const ref int i){
  i++; // error
}
964デフォルトの名無しさん:2008/08/03(日) 16:47:26
sakuraiさんが久しぶりにDの話題してるの見たw
965デフォルトの名無しさん:2008/08/03(日) 17:40:49
D1.0でこれって不正じゃないの?何でクロージャっぽい動作してるの?
http://codepad.org/TqJ2UHtm

これだと不正なのに…
http://codepad.org/mpTCvhlO
966デフォルトの名無しさん:2008/08/03(日) 19:27:30
>>965
D1.0のデリゲートもレキシカルクロージャじゃないだけで、ちゃんとしたクロージャだよ。
もっとも、環境を持ち運ばないから変数aの寿命が来た時点でクロージャは無効になる。
967966:2008/08/03(日) 19:40:15
ちなみに補足しとくと、一個目のコードは「たまたま動いてるだけ」のケース。
aのスコープは終わってるので本来は無効。
968965:2008/08/03(日) 19:45:50
>>966
さんくす。よくわかった。
>「たまたま動いてるだけ」のケース。
こういうのがバグの温床になるんだよな…
969デフォルトの名無しさん:2008/08/04(月) 06:10:15
>>970
次スレよろ
970デフォルトの名無しさん:2008/08/04(月) 08:52:36
この前すっげー下らないスレをマ板に誤爆したから立てられない、スマン


GCをマイクロ秒指定で動作させられるといいな
例えばだが
genCollect(1000);
で最大で1秒間GCに処理を渡す
戻り値はGCにかかった時間、失敗したら0とか-1だとか

重いけど合間を縫ってGC動かしたい
という時に便利

↓次スレよろ
971デフォルトの名無しさん:2008/08/04(月) 10:08:48
ERROR:新このホストでは、しばらくスレッドが立てられません。
またの機会にどうぞ。。。
デフォルトの名無しさん (1)

しょぼーん

↓次スレよろ
972デフォルトの名無しさん:2008/08/04(月) 10:30:15
973デフォルトの名無しさん:2008/08/04(月) 15:03:54
名前つき引数って採用できないのかなあ…
974デフォルトの名無しさん:2008/08/04(月) 15:42:42
構造体リテラル使ってお茶を濁すとか
975デフォルトの名無しさん:2008/08/04(月) 15:45:06
構造体リテラルは普通の関数呼び出しの構文だから名前つけれないよ…
名前かけるのは構造体イニシャライザか連想配列リテラル…

構造体リテラルと構造体イニシャライザの構文合わせて欲しかったんだけど、もうむりなのかなあ。
976デフォルトの名無しさん:2008/08/04(月) 15:50:10
ああ構造体イニシャライザか間違えた
D言語に不可能という文字はない(破壊的変更に関しては)
売り込めばあるいは
977デフォルトの名無しさん:2008/08/06(水) 12:06:23
this(typeof(this) other)
{
this.tupleof = other.tupleof;
}

typeof(this) dup()
{
return new typeof(this)(this);
}

埋め支援
978デフォルトの名無しさん:2008/08/06(水) 13:41:55
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
979デフォルトの名無しさん:2008/08/06(水) 14:03:36
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
980デフォルトの名無しさん:2008/08/06(水) 14:05:27
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
981デフォルトの名無しさん:2008/08/06(水) 14:05:40
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
982デフォルトの名無しさん:2008/08/06(水) 14:07:59
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
983デフォルトの名無しさん:2008/08/06(水) 14:07:59
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
984デフォルトの名無しさん:2008/08/06(水) 14:07:59
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
985デフォルトの名無しさん:2008/08/06(水) 14:07:59
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
986デフォルトの名無しさん:2008/08/06(水) 14:07:59
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
987デフォルトの名無しさん:2008/08/06(水) 14:08:00
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
988デフォルトの名無しさん:2008/08/06(水) 14:08:00
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
989デフォルトの名無しさん:2008/08/06(水) 14:08:00
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
990デフォルトの名無しさん:2008/08/06(水) 14:08:00
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
991デフォルトの名無しさん:2008/08/06(水) 14:08:00
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
992デフォルトの名無しさん:2008/08/06(水) 14:08:01
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
993デフォルトの名無しさん:2008/08/06(水) 14:08:00
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
994デフォルトの名無しさん:2008/08/06(水) 14:08:01
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
995デフォルトの名無しさん:2008/08/06(水) 14:08:02
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
996デフォルトの名無しさん:2008/08/06(水) 14:08:02
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
997デフォルトの名無しさん:2008/08/06(水) 14:08:02
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
998デフォルトの名無しさん:2008/08/06(水) 14:08:02
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
999デフォルトの名無しさん:2008/08/06(水) 14:08:02
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
1000デフォルトの名無しさん:2008/08/06(水) 14:08:02
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。