トップページ⇒tech
1001コメント263KB

D言語 Part18

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2008/04/14(月) 15:16:22
プログラミング言語 D (D Programming Language) について語るスレッドです。
過去スレは >>2

■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)

■コンパイラ
ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド)

■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF)
ttp://dsource.org/ (dsource)
ttp://tinyurl.com/3da5oa (C/C++に疲れた人のD言語)
ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語)
ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか)
ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座)
ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画)
ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games)

■ IDE
ttp://dronten.googlepages.com/dscite (DSciTE)
ttp://forums.codeblocks.org/index.php?board=20.0 (Code::Blocks)
ttp://www.dprogramming.com/entice.php (Entice Designer)
ttp://www.dsource.org/projects/descent (Descent)
ttp://www.dsource.org/projects/poseidon (Poseidon)
0002デフォルトの名無しさん2008/04/14(月) 15:17:08
■過去スレ
Part17 http://pc11.2ch.net/test/read.cgi/tech/1202623572/
Part16 http://pc11.2ch.net/test/read.cgi/tech/1195394435/
Part15 http://pc11.2ch.net/test/read.cgi/tech/1191582990/
Part14 http://pc11.2ch.net/test/read.cgi/tech/1184807424/
Part13 http://pc11.2ch.net/test/read.cgi/tech/1177499924/
Part12 http://pc11.2ch.net/test/read.cgi/tech/1171037394/
Part11 http://pc10.2ch.net/test/read.cgi/tech/1165621441/
Part10 http://pc8.2ch.net/test/read.cgi/tech/1158013550/
Part 9 http://pc8.2ch.net/test/read.cgi/tech/1146656260/
Part 8 http://pc8.2ch.net/test/read.cgi/tech/1137068104/
Part 7 http://pc8.2ch.net/test/read.cgi/tech/1122912733/
Part 6 http://pc8.2ch.net/test/read.cgi/tech/1109933426/
Part 5 http://pc5.2ch.net/test/read.cgi/tech/1102785854/
Part 4 http://pc5.2ch.net/test/read.cgi/tech/1091185216/
Part 3 http://pc5.2ch.net/test/read.cgi/tech/1079068715/
Part 2 http://f3.aaacafe.ne.jp/~null/cache/1079280501.html
Part 1 http://pc5.2ch.net/tech/kako/1003/10036/1003674814.html
0003デフォルトの名無しさん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/
0004デフォルトの名無しさん2008/04/14(月) 18:35:41
1otu
0005デフォルトの名無しさん2008/04/14(月) 20:45:44
おつ
0006デフォルトの名無しさん2008/04/14(月) 21:50:24
res!(1) << '乙';
0007デフォルトの名無しさん2008/04/14(月) 22:17:09
in { assert(otsu >> 1); }
0008デフォルトの名無しさん2008/04/15(火) 00:03:12
invariant 乙
0009デフォルトの名無しさん2008/04/15(火) 00:56:08
enum 乙
0010デフォルトの名無しさん2008/04/15(火) 01:19:53
throw new Otu(">>1");
0011デフォルトの名無しさん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, 乙);
0012デフォルトの名無しさん2008/04/15(火) 09:31:07
ちょっと前にstd.slistって無かったっけ。俺の見た幻……?
それはそうと>>1乙。
0013デフォルトの名無しさん2008/04/15(火) 12:55:41
>>12
あったよ
0014デフォルトの名無しさん2008/04/15(火) 17:45:58
>>1
おつゆ
0015デフォルトの名無しさん2008/04/15(火) 23:08:17
(´・ω・` )乙 ←ポニーテール
0016デフォルトの名無しさん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乙なんだからね!
0017デフォルトの名無しさん2008/04/16(水) 12:32:03
D言語のネタ来るまで乙禁止
0018デフォルトの名無しさん2008/04/16(水) 17:24:48
Dでデバイスドライバは書けますか?
0019デフォルトの名無しさん2008/04/16(水) 17:37:19
OS書けるんだし書けるんじゃないのかね
0020デフォルトの名無しさん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

エラー大杉

0021デフォルトの名無しさん2008/04/17(木) 11:14:59
乙失敗
0022デフォルトの名無しさん2008/04/18(金) 12:50:17
2.0でmutable/const/invariant周りのエラーを出さずに
一回でコンパイルが通るプログラムを書くことが全然できない件についてorz
複雑すぎるよう
0023デフォルトの名無しさん2008/04/18(金) 13:15:53
直感的じゃないよな
じゃあどうするのかと言われたら困るが
0024デフォルトの名無しさん2008/04/18(金) 16:00:57
駄目言語
0025デフォルトの名無しさん2008/04/18(金) 16:42:16
「opDot」が来る説
http://lists.puremagic.com/pipermail/digitalmars-d/2008-April/036205.html
0026デフォルトの名無しさん2008/04/18(金) 17:04:01
標準ライブラリの関数の引数が
mutable/const/invariantのどれなのか
把握していないといけないのが辛すぎる
関数の引数は全部constでいいんじゃないの?
0027デフォルトの名無しさん2008/04/18(金) 20:23:10
>>26
> mutable/const/invariantのどれなのか
> 把握していないといけないのが辛すぎる

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

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

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

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

>>32.34 最大の問題は関数の利用者が関数のために
明示的にdeep copyしないといけないところだと思えてきたよ
都合があるのは関数側なのにね
必要なら(.idupの代わりに)関数呼び出し直後に関数内で使う前にdeep copyして欲しい
0037デフォルトの名無しさん2008/04/19(土) 00:54:15
>>31
氏ねよカス(笑)
0038デフォルトの名無しさん2008/04/19(土) 00:58:31
最近の言語は文字列をimmutableな形式で持つことが多くなってきてるよね。
0039デフォルトの名無しさん2008/04/19(土) 01:24:26
std.stringなんかはinvariant(char)[]とconst(char)[]の両方のオーバーロードを提供すればいいんじゃないの。
0040デフォルトの名無しさん2008/04/19(土) 08:00:13
関数の引数ってconst()とrefとinとoutだけでいんじゃね?
0041デフォルトの名無しさん2008/04/19(土) 10:54:42
>>40
いいよな
俺はそうしてる
0042デフォルトの名無しさん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にしたの忘れてるんじゃないかな。
0043デフォルトの名無しさん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だけでいい。
0044デフォルトの名無しさん2008/04/19(土) 11:59:57
> もちろん例えばtolowerならinvariantのは定義せず、constだけでいい。

引数をinvariantにすればtolowerは純粋関数になるから、
ある種の最適化ができる可能性があるよね。
そういう意味でこちらもやはり両方定義すべき。
0045デフォルトの名無しさん2008/04/19(土) 12:08:46
>>44
invariantとかconstとかは純粋関数かどうかには関係なくね?
(引数以外の環境に依存せず同じ結果になるから。)
マルチスレッド対応とかはtolowerでやることじゃないだろうし。。
0046デフォルトの名無しさん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
0047デフォルトの名無しさん2008/04/19(土) 19:57:12
>>43
転送する引数が一つならまだしも複数になったら
自分で転送関数を書くのはやだぞ
0048デフォルトの名無しさん2008/04/19(土) 20:58:02
>>46
プリミティブ型の配列ならそれでもいいけど、
オブジェクトの配列だったりすると何か問題が起こりそうな気が
0049デフォルトの名無しさん2008/04/19(土) 21:23:08
opInvariant()の出番ですね!
0050デフォルトの名無しさん2008/04/19(土) 21:28:10
その前にopCastを実用可能なものにしろと…
0051デフォルトの名無しさん2008/04/19(土) 21:57:26
dmd1.028
static assert(is(void function()==function)); // static assert is false

なぜさ?
0052デフォルトの名無しさん2008/04/19(土) 22:00:16
>>51
void function()は関数ポインタ型
0053512008/04/19(土) 22:52:43
>>52
アホな俺にも
static assert(is(void delegate()==delegate)); //ok
static assert(is(void function()==function)); // static assert is false
この違いが分かるように教えてくれまいか
0054デフォルトの名無しさん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?
0055512008/04/19(土) 23:21:10
>>52,54
static assert(is(typeof(void function())==function)); //ok
大変勉強になりました。
0056512008/04/19(土) 23:25:55
↑失敗
void func(){}
static assert(is(typeof(func)==function)); //ok
ありがとうございました。
0057デフォルトの名無しさん2008/04/20(日) 00:30:38
俺も前それで1時間くらい悩んでしまったwww
0058デフォルトの名無しさん2008/04/20(日) 00:35:25
>>57
typeidで確認しろwww
0059デフォルトの名無しさん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());}
0060デフォルトの名無しさん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;
}
0061デフォルトの名無しさん2008/04/20(日) 12:09:27
>>60
いや、よくない。
const(A)[]であるaの参照がどこかにある限り、
a.dupの要素のメンバは変更されうるから、
何らかの方法でAをディープコピーしないといけない。
0062デフォルトの名無しさん2008/04/20(日) 13:43:53
.dupってディープコピーじゃないの?
0063デフォルトの名無しさん2008/04/20(日) 14:04:39
std.contractだかなんだかにあるやつが
結局>>60な感じだったとおもったが
0064デフォルトの名無しさん2008/04/20(日) 14:36:43
>>62
まさか。全く同じ内容の配列を複製するだけだよ。

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

なんていうかGCばんざい
__EOF__
0070デフォルトの名無しさん2008/04/20(日) 17:02:49
>>65 すぐ仕様が変わるだけで1.x系と2.x系のニ種類しかないよ
0071デフォルトの名無しさん2008/04/23(水) 02:40:09
class child : private parent
{ ... }
この場合の private みたいに親クラスに属性つけるとどうなるんだっけ?
何も変わってないような気がするんだが。
export属性つけると怒られるし(dmd1.028に)。
0072712008/04/23(水) 03:30:19
privateに関しては自己解決した。
お騒がせしました。
0073デフォルトの名無しさん2008/04/24(木) 16:59:42
静かだな
0074デフォルトの名無しさん2008/04/24(木) 17:23:06
そろそろ更新くるんじゃないかな
0075デフォルトの名無しさん2008/04/24(木) 19:50:57
何か難しいことでもしてるのかな
0076デフォルトの名無しさん2008/04/24(木) 21:21:55
いきなり3.0とかかw
0077デフォルトの名無しさん2008/04/24(木) 21:24:42
そして3.1でブレイクだな
0078デフォルトの名無しさん2008/04/24(木) 21:26:22
次は95とかですかね
0079デフォルトの名無しさん2008/04/24(木) 21:30:41
えっ、2095年?
0080デフォルトの名無しさん2008/04/24(木) 21:51:05
3/1に3.1、9/5に95ですね、わかります。
0081デフォルトの名無しさん2008/04/25(金) 00:17:30
え、それだけ言っておいてD2.013はスルーですか…?
Version D 2.013 Apr 22, 2008
0082デフォルトの名無しさん2008/04/25(金) 01:24:24
>Html source files are now deprecated.
え?アレ?
密かに期待してたんだが、、俺だけだった?
0083デフォルトの名無しさん2008/04/25(金) 01:51:11
 ・opDotはopCastのように盲目的に特定の型のインスタンスへ転送する機能
 ・switchのcaseはconstかinvariantな整数型変数なら定数じゃなくともOK
 ・HTMLファイルにD言語のソース埋め込める機能は黒歴史
 ・pureとnothrowは書くだけ書けるようにしておいたけどまだ何も機能しないよ
 ・synchronized文あるからvolatile文は非推奨
 ・__thread記憶クラス実装したけど、言語上での表現はたぶん別の形になるよ
 ・関数オーバーロードで、派生クラスはより近い祖先の引数型にマッチするようになったよ
あたりが主な変更?
opCastといいopDotといい謎な仕様だと思った。

HTML埋め込みは、Dコンパイラにやらせるべき仕事じゃなかったんだろうな、と思った。
0084デフォルトの名無しさん2008/04/25(金) 02:43:05
opDotはalias thisみたいな匂いがするね
0085デフォルトの名無しさん2008/04/25(金) 04:47:03
>>83
switchのcaseはさりげなく面白い変更だな。
同じ動作だが基準がインスタンスごとに変えられるようになるのかな?
0086デフォルトの名無しさん2008/04/25(金) 06:25:57
switchはどうせなら文字列でも出来るほうが面白そうな気がする
0087デフォルトの名無しさん2008/04/25(金) 08:45:43
>>81
気づいてたら教えてくらさい
0088デフォルトの名無しさん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用ライブラリが書ける。
0089デフォルトの名無しさん2008/04/25(金) 13:43:07
>>86
switchの条件に文字列指定は前から出来るけど・・・

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

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

>>83 の「switchのcaseはconstかinvariantな整数型変数なら定数じゃなくともOK」に対して,「const/invariantな文字列をcase文に使えたら面白い」という話だろ
0091デフォルトの名無しさん2008/04/25(金) 14:21:51
まあ多分こっちの意図と違う事言ってるだろうなと思いつつ勢いに任せて書いた。すまぬ。
0092デフォルトの名無しさん2008/04/27(日) 07:31:21
switch caseのconst変数について。
スタックにあるconstな変数は受け付けますが、
ヒープにある可能性のあるものは全部NGかなという感じです。
関数内(ネスト関数の外側関数含む)でconstな変数は受け付けますが、
クラスフィールド上でconstなものは受け付けません。
0093デフォルトの名無しさん2008/04/27(日) 14:02:04
D面白そうだからやってみたいんだけどオススメの本あったら教えて
英語か日本語の本で
0094デフォルトの名無しさん2008/04/27(日) 14:13:24
他の言語知ってるなら言語仕様のページ見るだけで十分だと思う。
0095デフォルトの名無しさん2008/04/27(日) 14:19:32
>>93
日本語の本で一番新しいのは『D言語パーフェクトガイド』。ただし古くて何の役にも立たない。
英語で最近出たのは『Learn to Tango with D』。まだ読んでないから内容の是非はわからない。
0096デフォルトの名無しさん2008/04/27(日) 14:21:23
D はリアルタイムで言語が大きく変わるから
ついていくには本なんて役に立たない
0097932008/04/27(日) 14:24:10
learn to tango->ダンスの本かと思ってスキップしてた
amazonで買った
0098デフォルトの名無しさん2008/04/27(日) 15:08:48
Dの本って出版された時点で時代遅れになってそうだな。
0099デフォルトの名無しさん2008/04/27(日) 15:10:25
D 1.0 で止まっていいのなら何とかなりそうではあるが・・・
D 2.0 に興味があるなら本は無駄だと言わざるを得ない
0100デフォルトの名無しさん2008/04/27(日) 15:30:26
opDotって委譲しやすくするって認識でおk?
0101デフォルトの名無しさん2008/04/27(日) 15:31:24
>>100
No.
単一の型にしかforwardできないから何の役に立つのかさっぱり分からない。
0102デフォルトの名無しさん2008/04/27(日) 15:38:18
o.m
が
o.opDot!("m")
にでもなれば、いろいろ面白そうなのにな。
0103デフォルトの名無しさん2008/04/27(日) 17:24:46
>>102
なんにつかえるかわからんけど、おもしろそう
0104デフォルトの名無しさん2008/04/27(日) 17:26:07
>>102
関数の引数のstaticが来たらopDot("m")でいい気ガス。
0105デフォルトの名無しさん2008/04/27(日) 18:05:18
>>103
ActiveXのレイトバンディングとかに使えるかも。
0106デフォルトの名無しさん2008/04/28(月) 03:29:47
クラス関数を列挙して、それに対応する配列の擬似プロパティ版関数を作るテンプレートってありますか?
下記のような……

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

↓

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

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

class A {
int foo(int a)
}

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

名前が一緒で引数の取り方が違う場合
0112デフォルトの名無しさん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
0113デフォルトの名無しさん2008/04/29(火) 21:44:13
>>112
わっ本当だ!
ありがとうございます!

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

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

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

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

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

ていうかWindowsでUTF8が(ry
0134デフォルトの名無しさん2008/05/01(木) 10:37:10
ところで、charがUTF-8の文字という意味を持っているなら、
なんで、toMBSzとかはchar*を返すんだ?
ubyte*を返すべきなんじゃないか?
0135デフォルトの名無しさん2008/05/01(木) 13:11:56
まったくその通りだと思います
0136デフォルトの名無しさん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 って文字列が出てこない。
出てこさせる方法は無いですか?
0137デフォルトの名無しさん2008/05/01(木) 15:22:47
fflush(stdout);
0138デフォルトの名無しさん2008/05/01(木) 15:26:06
>>136-137
std.stdio.flushall();
てのなかったっけ
0139デフォルトの名無しさん2008/05/01(木) 15:32:06
>137
>138
出てこないみたいです。
0140デフォルトの名無しさん2008/05/01(木) 16:49:44
あーーーわかりますた。

標準出力用のコンソールが、eclipse の外のウィンドウで出てたです。
気がつかなかったー。
0141デフォルトの名無しさん2008/05/01(木) 17:36:59
ワラタ
0142デフォルトの名無しさん2008/05/01(木) 20:25:08
>>136
その実現する過程をぜひ教えてほしい・・・
0143デフォルトの名無しさん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
0144デフォルトの名無しさん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\\   // ← コンパイラに渡すオプション


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

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

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

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

どもありがとうございました〜
0172デフォルトの名無しさん2008/05/05(月) 08:12:45
>>これで判れ
Dは初心者向けじゃなくて今までの言語との比較が基本だから仕方ない気もしてたり
0173デフォルトの名無しさん2008/05/06(火) 00:46:47
poseidonがなんか少し新しくなってる
0174デフォルトの名無しさん2008/05/06(火) 01:35:34
>>171
ttp://rayerd.ddo.jp/pukiwiki/ingwiki/index.php?C%2FC%2B%2B%A4%CB%C8%E8%A4%EC%A4%BF%BF%CD%A4%CED%B8%C0%B8%EC#ba92f204
比較したいならこっちをどうぞ
0175デフォルトの名無しさん2008/05/06(火) 01:38:46
[poseidon diff]
http://www.dsource.org/projects/poseidon/wiki/WikiStart?action=diff&version=31

[descent diff]
http://www.dsource.org/projects/descent/wiki/WikiStart?action=diff&version=65
0176デフォルトの名無しさん2008/05/06(火) 04:51:01
>>149
ありがとうございました。
おかげさまで>106もどきができたのですが、
長いのでここに貼るのはどうかなという感じのものです。
codepadはたぶんコンパイラのバージョンの違いで通りませんでした。
0177デフォルトの名無しさん2008/05/06(火) 20:37:53
dflのListViewってハンドル取れないようになってないかい?
0178デフォルトの名無しさん2008/05/08(木) 09:39:00
ハンドルって何のこと
0179デフォルトの名無しさん2008/05/08(木) 12:09:55
キャンドル♪ハンドル♪ペダルにサドルに自♪転♪車♪漕いどる♪
0180デフォルトの名無しさん2008/05/08(木) 17:44:31
Windows的にいえば、Windowハンドルじゃないかい?

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

>>184
スナップショットのほうで対応してるってことかと。
0187デフォルトの名無しさん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 に改名したら普通に動くのに・・・
どこかに設定が残っているのでしょう?
0188デフォルトの名無しさん2008/05/08(木) 23:15:56
多分わかった
両方のバージョンを入れていて競合する人はdfl.exeを使う前に
dfl -i
を実行してやればいいみたいだ
0189デフォルトの名無しさん2008/05/09(金) 00:29:43
>>179
会いに来て荒♪井♪注♪
0190デフォルトの名無しさん2008/05/09(金) 07:28:43
DFLでつかえるコントロール一覧のスクリーンショットってなかったっけ
0191デフォルトの名無しさん2008/05/09(金) 16:24:34
ttp://www.dprogramming.com/dflscreenshots.php
0192デフォルトの名無しさん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
}

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

別方法で打開しました。おさわがせ。
0198デフォルトの名無しさん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);
}

これじゃ駄目だったの?
0199デフォルトの名無しさん2008/05/10(土) 03:51:49
C++使ってたから俺も混乱した
0200デフォルトの名無しさん2008/05/10(土) 19:35:18
Dも、C#みたいに型省略宣言入れてくれよ。
0201デフォルトの名無しさん2008/05/10(土) 19:36:25
autoで我慢しなせぇ。
0202デフォルトの名無しさん2008/05/10(土) 22:11:02
>>200 どんなの?
0203デフォルトの名無しさん2008/05/10(土) 22:19:29
匿名型のことかな
02042022008/05/10(土) 22:45:05
これか?
void main(){
    auto x = new class {int a; string b;};
    x.a = 1;
    x.b = "hoge";
}
0205デフォルトの名無しさん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が同じ型にならないのがだめだな。
02062022008/05/10(土) 22:59:05
まあそういう仕様だわなあ
同じ型がいい理由ってどんなんがあるの?
0207デフォルトの名無しさん2008/05/10(土) 23:00:45
ん・・・あれ?
行頭のスペースが残ってる
for(;;){
    writefln();
}
0208デフォルトの名無しさん2008/05/10(土) 23:05:14
>>206
配列に突っ込みたいときとか
0209デフォルトの名無しさん2008/05/10(土) 23:31:08
てs
0210デフォルトの名無しさん2008/05/11(日) 05:34:08
  だろ?
0211デフォルトの名無しさん2008/05/11(日) 08:00:40
うーんLINQみたいな応用があれば
匿名型は有意義なんだろうけど今のままならあんまりかなあ
匿名型のTupleを可変長テンプレートの引数に与えるとかで代用できないのか
0212デフォルトの名無しさん2008/05/11(日) 11:00:31
>>191
ありがとう〜
0213デフォルトの名無しさん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;
}
02142132008/05/12(月) 20:41:00
auto p= has( as, key)
p.MEMBER= VALUE;
って感じです。
こうやったほうがいいぜ、とかご意見ありましたらm(_ _)m
0215デフォルトの名無しさん2008/05/12(月) 20:42:16
V* has(K, V)( ref V[k] as, K key)

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

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

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

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

コンパイル時に末尾最適化がかかるとは思ってないけども、
文字列が長くなったときに影響あるかな…と思いまして。
0225デフォルトの名無しさん2008/05/13(火) 23:09:58
>>224
関数にすれば良くね?
0226デフォルトの名無しさん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);
}
02272242008/05/13(火) 23:48:25
>>224 >>225
コンパイル時に実行できる関数がうまく作れなかったのでテンプレートにしたんだけど
関数で書けるのなら関数のほうがいいですね。参考になりました。ありがとう。
0228デフォルトの名無しさん2008/05/14(水) 00:20:18
>222
ポエニーのソースを見ると良いよ。sqlite3 をつかってたはず
0229デフォルトの名無しさん2008/05/14(水) 04:01:35
>>228
ありがとうございす。
ソースの中にあった、dllとLibファイルを入れ替えたら動きました・・・。
Libファイルの作り方が悪かったようです。
0230デフォルトの名無しさん2008/05/14(水) 07:12:25
ひさしぶりにDさわったら、ずいぶんましになってんのな
前はコンパイラがすっこんすっこん落ちてた
0231デフォルトの名無しさん2008/05/14(水) 10:11:13
void foo() {
void bar(...) {
}
}

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

でWM_IME_CHARがこないんだ、がみんなどうよ?
0236デフォルトの名無しさん2008/05/15(木) 13:13:07
Error: no property 'hogefunc' for type 'hoge.Hoge'
これはどういう意味なんでしょう。
関数は定義されてるはずなんですが。
0237デフォルトの名無しさん2008/05/15(木) 13:14:28
思いっきり勘違いでした。
定義されてない関数でした。
0238デフォルトの名無しさん2008/05/15(木) 16:21:34
>>235 それをパッと実験できる準備ができてる人はあんまりいないと思う
0239デフォルトの名無しさん2008/05/16(金) 01:32:39
文字列の連想配列って
char[char[]][]
じゃエラーになるんですが、どういう風に宣言すればいいんでしょう?
0240デフォルトの名無しさん2008/05/16(金) 01:42:54
string[string]
0241デフォルトの名無しさん2008/05/16(金) 03:03:20
char[][char[]]
0242デフォルトの名無しさん2008/05/16(金) 16:07:18
>>239
それじゃ文字の連想配列の配列じゃね
0243デフォルトの名無しさん2008/05/16(金) 20:47:04
dでリフレクションな事ってできませんかね。
アクション呼ぶのにSwtich文つらつら書いてるのがあれなんですが。
0244デフォルトの名無しさん2008/05/16(金) 21:43:46
1.reflection.dを使う
2.BOFの発表であったいずれ来るかもしれないライブラリを待つ
3.自分で作る
のどれかかな
0245デフォルトの名無しさん2008/05/17(土) 06:44:20
>>241
>>242
動きました。
ありがとうございました。
0246デフォルトの名無しさん2008/05/17(土) 11:56:07
と思ったら動いてませんでした。
["hoge":"omg","test":"sod"];
こういう配列を受け入れる変数はどういう宣言が必要なんでしょうか。
0247デフォルトの名無しさん2008/05/17(土) 11:59:31
string[string] aa = ["hoge"[]:"omg"[],"test":"sod"];
0248デフォルトの名無しさん2008/05/17(土) 13:23:02
あぁ、すごい勘違いですた。
~=じゃなくてそのまま=で入れられるんですた。
0249デフォルトの名無しさん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.
0250デフォルトの名無しさん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.
0251デフォルトの名無しさん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
0252デフォルトの名無しさん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.
0253デフォルトの名無しさん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-
0254デフォルトの名無しさん2008/05/17(土) 16:40:48
1) ユーティリティとしてのdmdの使い勝手の向上
2) phobosの改善
3) バグ修正

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

こんなの

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

void main()
{
typedef int[int] intint;
intint[] a = new intint[5];
}
0263デフォルトの名無しさん2008/05/18(日) 00:47:15
シャアw
0264デフォルトの名無しさん2008/05/18(日) 04:04:55
>>261
それはずっと前からバージョン関係なく止まる。
効率良くはないが、俺はループさせてnullで埋めたりしてた。
0265デフォルトの名無しさん2008/05/18(日) 08:36:52
伝説のIDEか
ttp://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D.ide&artnum=176
Zeus自体は有料なんだけどね
ttp://www.zeusedit.com/index.html
0266デフォルトの名無しさん2008/05/18(日) 16:45:27
std.bindいじってたらdmd落ちた・・・
どこが原因かわかんね
0267デフォルトの名無しさん2008/05/18(日) 17:30:22
2.014 std.xmlがうまくうごかなくなった・・
onStartTag内で、attrがからっぽ
0268デフォルトの名無しさん2008/05/19(月) 03:50:56
質問なんですが、一度設定したらそれ以降不変なメンバの初期化をコンストラクタに
与えられた値を使って行いたいです。D言語だとinvariantなメンバの初期化はどうやって
行うのでしょうか。
0269デフォルトの名無しさん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
}
}
0270デフォルトの名無しさん2008/05/19(月) 08:19:55
DはC++と違ってメンバ初期化子ないもんね
0271デフォルトの名無しさん2008/05/19(月) 08:25:55
参照型のクラスにはいらないし
値型の構造体にはコンストラクタが定義できない
無駄なインスタンスが作られないからメンバ初期化子はいらないわけか
0272デフォルトの名無しさん2008/05/19(月) 08:56:39
誰かstd.encodingについて3行でまとめてくれ
0273デフォルトの名無しさん2008/05/19(月) 09:12:33
切り捨てなきゃ無理
0274デフォルトの名無しさん2008/05/19(月) 14:09:25
文字列エンコーディングに関する標準が出来た感じ?
encodingのドキュメントぱっと見たけど、シグニチャがGeneric過ぎて使い方がすぐイメージできんw
あとEncodingSchemeASCIIとかのクラス名はASCIIEncodingSchemeのほうが良くないか。
語順がなんか気持ち悪い。

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

いや、「いつの間にか必要無くなってる」というのを待ってるのかもw
0282デフォルトの名無しさん2008/05/20(火) 17:52:35
コンパイラのソースが公開されてるんだから
自分たちでやるっつーのは?
0283デフォルトの名無しさん2008/05/20(火) 18:03:47
言語として互換性を損なうと、それこそ意味がない。
0284デフォルトの名無しさん2008/05/20(火) 19:13:40
>>280
今やらねばいつできる -> 今やらねばいつかできる
俺がやらねば誰がやる -> 俺がやらねば誰かやる
0285デフォルトの名無しさん2008/05/20(火) 19:27:13
という
0286デフォルトの名無しさん2008/05/22(木) 09:46:31
win32.windowsとかdflとか2.0対応のライブラリが
増えてきていい感じに使えるようになってきたね
0287デフォルトの名無しさん2008/05/22(木) 13:59:29
あとはTango?
統合されないのかなぁ・・・
ひろいとはいえないDの世界で基本ライブラリが
2つ開発されているのはなんとももったいない
0288デフォルトの名無しさん2008/05/22(木) 14:47:57
walたんがそのうち統合されるんじゃねwww
みたいなこと言ってなかったっけか
0289デフォルトの名無しさん2008/05/22(木) 16:25:44
BOFの時の質問にそんなんがあったな。
やっぱり「そのうち統合されるんじゃない?」みたいな感じだった気が。
今のところ統合する気はないってことだよね。
0290デフォルトの名無しさん2008/05/22(木) 18:00:18
タンゴボスは駄目なのかい
0291デフォルトの名無しさん2008/05/22(木) 23:05:11
名前からしてダメダメオーラが
0292デフォルトの名無しさん2008/05/22(木) 23:06:38
ウォルたんのギャグセンスは微妙w
0293デフォルトの名無しさん2008/05/23(金) 12:32:39
しかし0.1ショックは面白かった
0294デフォルトの名無しさん2008/05/23(金) 16:03:12
Tangoも…
0295デフォルトの名無しさん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で即落ちします・・・
0296デフォルトの名無しさん2008/05/23(金) 23:47:22
VariantのopEqualsの実装がどうなってるのか確認したほうがよさげ。
0297デフォルトの名無しさん2008/05/24(土) 00:43:03
機能から複数のファイルに分けられたユーティリティ関数を
同じ名前空間みたいな感じでアクセス( Util.hoge() って感じに)したくて、
今はそれぞれのファイルにおいて関数をテンプレートで書いて、
ひとつのファイルでそれらをミックスインしてるんだけど、他に良い方法
ないですか?
0298デフォルトの名無しさん2008/05/24(土) 00:48:34
ファイルを結合する
0299デフォルトの名無しさん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]
0300デフォルトの名無しさん2008/05/24(土) 01:18:48
> 298
あー、なるほど・・・。ありがとうございます!
import("hoge.d"); ですよね。やってみます。

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

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

if( var("aaaa") in dic ) {
 writeln( "has" ); //表示されない
}
0303デフォルトの名無しさん2008/05/25(日) 09:24:28
listviewにアイコン載せれるようになったらおいらはいつでも戻ってくる
0304デフォルトの名無しさん2008/05/25(日) 11:33:38
>>302
Dのリテラル文字列ってinternされないって事なのかな?
0305デフォルトの名無しさん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
0306デフォルトの名無しさん2008/05/25(日) 13:00:14
>>305は>>303へ
0307デフォルトの名無しさん2008/05/25(日) 15:00:09
>>304
toHashは同じ値になるから,結局はopCmpやopEqualsの実装によるのではなかろうか
0308デフォルトの名無しさん2008/05/25(日) 16:32:51
>>307
var("aaa") == var("aaa") ってなりますね。
opCmpかな〜
0309デフォルトの名無しさん2008/05/26(月) 19:48:25
Dで大規模アプリの開発に取り掛かったんだけど言語の選択ミスしてる?
0310デフォルトの名無しさん2008/05/26(月) 19:54:02
大規模アプリってなんぞ
0311デフォルトの名無しさん2008/05/26(月) 20:24:55
>309
ムチャシヤガッテとは言っておく。
0312デフォルトの名無しさん2008/05/26(月) 20:33:41
>>309
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::。:::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::。::::::...... ...   --─-  :::::::::::::::::::: ..::::: . ..::::::::
:::::::::::::::::...... ....:::::::゜::::::::::..   (___ )(___ ) ::::。::::::::::::::::: ゜.::::::::::::
:. .:::::。:::........ . .::::::::::::::::: _ i/ = =ヽi :::::::::::::。::::::::::: . . . ..::::
:::: :::::::::.....:☆彡::::   //[||    」  ||]  ::::::::::゜:::::::::: ...:: :::::
 :::::::::::::::::: . . . ..: :::: / ヘ | |  ____,ヽ | | :::::::::::.... .... .. .::::::::::::::
::::::...゜ . .:::::::::  /ヽ ノ    ヽ__/  ....... . .::::::::::::........ ..::::
:.... .... .. .     く  /     三三三∠⌒>:.... .... .. .:.... .... ..
:.... .... ..:.... .... ..... .... .. .:.... .... .. ..... .... .. ..... ............. .. . ........ ......
:.... . ∧∧   ∧∧  ∧∧   ∧∧ .... .... .. .:.... .... ..... .... .. .
... ..:(   )ゝ (   )ゝ(   )ゝ(   )ゝ無茶しやがって… ..........
....  i⌒ /   i⌒ /  i⌒ /   i⌒ / .. ..... ................... .. . ...
..   三  |   三  |   三  |   三 |  ... ............. ........... . .....
...  ∪ ∪   ∪ ∪   ∪ ∪  ∪ ∪ ............. ............. .. ........ ...
  三三  三三  三三   三三
 三三  三三  三三   三三
0313デフォルトの名無しさん2008/05/26(月) 21:08:24
>>309
それはあくまで「趣味の範囲」での大規模ですね、わかります
0314デフォルトの名無しさん2008/05/26(月) 22:10:17
>>313
GUIです。
0315デフォルトの名無しさん2008/05/26(月) 22:22:10
GUI使ってれば大規模?
0316デフォルトの名無しさん2008/05/26(月) 23:20:17
ひょっとすると、GUIフレームワークを開発中なのでは?
0317デフォルトの名無しさん2008/05/26(月) 23:54:12
>>316・・・それはないだろう
>>314普通のGUIアプリならDでもいいけど
Dの利点は優れた構造化能力と何よりフロンティアであることです
実務を楽にこなしたいならC#の方がいいよ
0318デフォルトの名無しさん2008/05/27(火) 10:37:03
>>309
答えるのが難しい質問だね。
言語仕様自体は、コード解釈で微妙な誤解が起きたりしないよう
注意が払われてるなど、大規模開発を意識したものになってる。
しかし現状では、処理系やライブラリの熟成度に不安がある。
0319デフォルトの名無しさん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と私のどちらがおかしいのでしょうか?
私がおかしい場合、どのように書くのが正解なのでしょうか?
0320デフォルトの名無しさん2008/05/27(火) 15:11:58
public override int getint()
{
  return super.getint;
}
これじゃ駄目な理由は何?
0321デフォルトの名無しさん2008/05/27(火) 16:06:32
>>320
いえ、それで結構です。super.で呼べるのですね。
それを知らなくて return super(); とかいろいろやってました。
ありがとうございました。
0322デフォルトの名無しさん2008/05/27(火) 16:39:58
TinyXMLはObjectのメンバを再定義してる部分が多くて
全部hiddenなんとかのエラーが出てしまう
alias Object.print print;
public void print() {}
て全部やらないのいけないよね?
めんどいけどしょうがないのかな
0323デフォルトの名無しさん2008/05/27(火) 20:51:13
D言語とC++0xって闘ったらどっちが強いんですか!?
0324デフォルトの名無しさん2008/05/27(火) 20:57:58
純粋な疑問なんだけどプログラム言語の世界で「○○言語最強」とか言ってる連中って何がしたいの?
「強さ」の基準からしてまったくわからんのだけど。
0325デフォルトの名無しさん2008/05/27(火) 21:05:12
作者と信者がガチの喧嘩をしたらどっちが勝つかという問題だろう。
Dは少数派だから厳しいだろうな。
0326デフォルトの名無しさん2008/05/27(火) 21:13:40
D教祖の筋肉とチーマObjective-C信者の飛び道具がマジノ攻防戦?
0327デフォルトの名無しさん2008/05/27(火) 22:24:34
でもDは大砲も跳ね返すんだぜ?
http://www.kmonos.net/alang/d/2.0/dbc.html
0328デフォルトの名無しさん2008/05/27(火) 22:51:58
すげぇwwwwwwwwwwwwwwwwwww
D言語使わせてくれwwwwwwwwwwwwwwwwww
0329デフォルトの名無しさん2008/05/27(火) 23:02:19
D事態が弾を内包しているという罠・・・
0330デフォルトの名無しさん2008/05/28(水) 00:16:40
その弾丸と親和性が高いのではねかえせるのですね。わかります。
0331デフォルトの名無しさん2008/05/28(水) 00:39:32
DでBasicっぽいゲームエンジン作ろうかと思ってるのだがやめておいたほうがいいだろうか・・・
0332デフォルトの名無しさん2008/05/28(水) 00:45:54
D言語で最新のDirectX SDKを叩ける方法の方が…
0333デフォルトの名無しさん2008/05/28(水) 02:15:29
>>331
いや、やってみてから挫折しろよ
0334デフォルトの名無しさん2008/05/28(水) 05:49:30
>>332
最新に完全対応かどうかはわからないけど
DSourceにあるBindingsで叩ける
最新SDKとリンクさせてるけど、いまのところ問題ない。
0335デフォルトの名無しさん2008/05/28(水) 06:27:21
>>324
何がしたいっていうか、そういう遊びだろう。
勝敗の決まらない、操作そのものを楽しみ続ける格闘ゲームみたいなものだから、
基準がまったく定まらず、お互いにまったく噛み合わないこと自体も
彼らの求める相互排他とか衝突を生み出すいいきっかけなんだよ。
0336デフォルトの名無しさん2008/05/28(水) 07:27:03
>>327
なんでD言語のキャラクターはこんなにムカつくんだwww
0337デフォルトの名無しさん2008/05/28(水) 08:51:39
>>334
まじ?Bindingsってなんか依存関係でコンパイラがエラーはくんじゃなかった?
0338デフォルトの名無しさん2008/05/28(水) 11:11:11
ロゴがある言語って少ないんだからあのロゴキャラ消してもいいような…
0339デフォルトの名無しさん2008/05/28(水) 11:20:34
日本以外はサマータイムやってるから理論はいかがなものかと。
ウザカワキャラってことで売り出していこうぜ,
0340デフォルトの名無しさん2008/05/28(水) 11:41:16
>>337 そんなのとっくに直ってる
0341デフォルトの名無しさん2008/05/28(水) 13:57:47
GDI+ の D言語へのポートってないんですか?
自分でシコシコ作るしかないのかな…
0342デフォルトの名無しさん2008/05/28(水) 14:33:41
大規模やらDirectX10やら、やたら勇者がおおいな
0343デフォルトの名無しさん2008/05/28(水) 15:44:21
そう言えば日本のサマータイム導入はどうなるんだろう。
他の導入済み都市と比べて夏と冬の日照時間にほとんど差がないから意味がないような。
また政治家の手続き遊びによる金稼ぎが。
0344デフォルトの名無しさん2008/05/28(水) 20:29:27
毎年、切り替えの日に仕事遅刻するのが目に見えてるからやめてほしい。
0345デフォルトの名無しさん2008/05/29(木) 15:41:17
なんの話だよ
0346デフォルトの名無しさん2008/05/29(木) 15:58:53
サマータイムの話では。
0347デフォルトの名無しさん2008/05/29(木) 21:01:28
DigitalMars のサイトが……
0348デフォルトの名無しさん2008/05/29(木) 21:29:54
と思ったら蘇ってた
0349デフォルトの名無しさん2008/05/29(木) 21:49:18
一瞬だけ変なところ飛んだんだが、何事だったんだろうな
0350デフォルトの名無しさん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を試しても同じエラーが出てしまいました。

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

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

これ通らないのかよー
0373デフォルトの名無しさん2008/06/04(水) 21:42:58
>>372
-J.
0374デフォルトの名無しさん2008/06/04(水) 22:12:58
それしてもコンパイルは通ったように見えるけど、実際は何も生成されない。
0375デフォルトの名無しさん2008/06/04(水) 22:14:13
何も生成されない、というか空文字列として扱われてるみたい。
0376デフォルトの名無しさん2008/06/05(木) 08:25:02
>-J.
これがなんかの絵文字かなやんだおれは
修行がたりない
0377デフォルトの名無しさん2008/06/05(木) 15:40:40
>:-J.
0378デフォルトの名無しさん2008/06/05(木) 20:39:49
|| -J. |
- ノ
0379デフォルトの名無しさん2008/06/05(木) 21:33:30
||||
-J
o/
0380デフォルトの名無しさん2008/06/06(金) 08:02:35
やってることが暇人すぎてわろた
0381デフォルトの名無しさん2008/06/06(金) 17:40:20
何か建設的な話題はないのか
0382デフォルトの名無しさん2008/06/06(金) 20:03:30
2010年にD++が出る
0383デフォルトの名無しさん2008/06/06(金) 20:17:42
D#とDavaとDoberonも出るよ
0384デフォルトの名無しさん2008/06/06(金) 20:42:15
DaskellとかDCamlとかDispに期待。
0385デフォルトの名無しさん2008/06/06(金) 20:51:46
DOBOLだな
0386デフォルトの名無しさん2008/06/06(金) 20:53:36
最近はバグ取れてきた?
そろそろ本格的に使ってみようかと思うんだが(趣味でだけど)
JavaとRubyに慣れた身にはC++は苦痛・・・・・・代替言語が欲しい
0387デフォルトの名無しさん2008/06/07(土) 03:58:32
javaに慣れてるならライブラリが薄いこと以外はスーパーセット的に使えるだろ
rubyみたくクラスに機能をインジェクションしようと考えてテンプレートをいじる遊びもできるし
0388デフォルトの名無しさん2008/06/07(土) 11:02:13
>>386
バグは普通に使う分にはすでにあまり問題ないレベルであるように感じる。
趣味で追いかける分にはD言語は愉快な言語だと思う。
0389デフォルトの名無しさん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);
}

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

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

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

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

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

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

>>405
>フォールバック
ちくしょう、おいらにゃ意味がわかんねぇ
0407デフォルトの名無しさん2008/06/09(月) 20:01:16
>>406
書くならこうだろう。
foreach (i, k; aa.keys.sort)
0408デフォルトの名無しさん2008/06/10(火) 02:19:56
今無性にimport文でワイルドカード使いたい。Javaみたいに。ニュースグループではそんな無駄な
機能いらねぇよ派が多数だったみたいだけどな。Tango のライブラリとか細かすぎていちいち
書くの面倒になっちゃうよ。DFL みたいに all.d みたいなファイルを用意しておけば、まぁ
似たようなことはできそうなんだけど。
0409デフォルトの名無しさん2008/06/10(火) 02:45:53
Tangoにもまとめてimportする用のモジュールあるじゃん。
04104082008/06/10(火) 03:40:56
…あ。tango.group なんてあるのね。>>409 のお陰で得した気分だ、ありがとう
0411デフォルトの名無しさん2008/06/11(水) 04:09:13
処理速度ってC++より早いのか?
0412デフォルトの名無しさん2008/06/11(水) 08:37:58
また馬鹿げた質問を
単純ループのベンチマークでもとって比べるか?w
0413デフォルトの名無しさん2008/06/11(水) 08:49:25
処理速度気にするなら単純なコードでコンパイルして逆汗して比較汁
コンパイラの出来も同時に判る
組み込みやってた知り合いはそれやってたらできたてのコンパイラのバグみつけた
0414デフォルトの名無しさん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で受けられないの? ってことと、あと文字列が連結されてるだけで置換されてない……。
公式のサンプル通りなんだけど、ドキュメント古くなってる? 俺がなんか変なことしてるのかな。
0415デフォルトの名無しさん2008/06/11(水) 13:33:38
metastringsのソース見れば分かるけど返ってくるのはconst char[]なので,
stringでは受けられないんじゃないかなぁ(実際はconst(const(char[]))かな).
使うときはいつもautoなので気にしてなかった.

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

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

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

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

いまいちこれだという方法が無い気がするのです。
なにか良いライブラリ等ありますでしょうか。
0455デフォルトの名無しさん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 ]);


で無理かな?
0456デフォルトの名無しさん2008/06/18(水) 22:30:55
Version D 2.015 Jun 17, 2008
PICマイコン対応…と夢想しかけた。
0457デフォルトの名無しさん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まで実装してくれよ。
0458デフォルトの名無しさん2008/06/18(水) 22:44:30
(1) auto func(T)(){ return 1; }
(2) auto func(){ return 1; }

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

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

void main() {
f();
}

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

D言語でエロゲーつくって
ttp://pc11.2ch.net/test/read.cgi/gamedev/1091256780/
0469デフォルトの名無しさん2008/06/19(木) 02:09:43
DからDirectXってそんなに面倒そうでもなさそうなんだがな・・・・・?
Cとのインターフェースはあるんだから
0470デフォルトの名無しさん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にするときにマクロの展開だけが面倒
0471デフォルトの名無しさん2008/06/19(木) 02:21:43
>>470
正真正銘プロの犯行に吹いたw
0472デフォルトの名無しさん2008/06/19(木) 02:27:09
>>470
なんという勇者w
DirectXなんてほとんど使ったことないが、
面白そうだからちょっといじってみるか
0473デフォルトの名無しさん2008/06/19(木) 02:32:51
>>468
まったく人がいなくて吹いた。
SDL+OpenGLのほうがポーティング揃ってるし、DirectX使うより楽だとおも。
たしかゲーム用にラップしたライブラリあったし。

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

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

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

とおもってソース見てみたら、そもそもデストラクタなかった。
どうなってんだよ。
0485デフォルトの名無しさん2008/06/21(土) 03:26:35
> これはつまり、 デストラクタからはメンバオブジェクトを参照できないことを意味しています。
これがなければデストラクタも使い物になるというものの…
0486デフォルトの名無しさん2008/06/21(土) 03:57:45
とりあえず必要だと思うのは、scopeメンバ変数だな。
コンストラクタで一回だけ初期化できて、オブジェクトがdeleteされるときに道ずれにdeleteするの。
0487デフォルトの名無しさん2008/06/21(土) 04:04:44
Tango導入しようかなあ…
phobosは統一性なさすぎて辛い…
0488デフォルトの名無しさん2008/06/21(土) 14:30:25
>>485
ファイルハンドルのような開放しなければならないメモリはガベコレの外にあるのだから、デストラクタに開放処理を書いても問題ないと思うけどね。
0489デフォルトの名無しさん2008/06/21(土) 14:33:35
IDisposable的なhackが必要になるってことか。
0490デフォルトの名無しさん2008/06/21(土) 15:29:12
>>485
これって、メンバオブジェクトをdeleteすることも認められないのかな?
0491デフォルトの名無しさん2008/06/21(土) 18:20:16
あーもー英語使わなくてもphobosのtrunkにコミットできたい
0492デフォルトの名無しさん2008/06/21(土) 19:39:11
staticメンバにリストを作って管理とか無理かな
0493デフォルトの名無しさん2008/06/21(土) 21:29:05
>>486
そんなのイラネwwww
って思ったけど、必要だな・・・
0494デフォルトの名無しさん2008/06/21(土) 21:45:08
>>488
たしか、デストラクタって呼ばれる保証はないんじゃなかったっけ?
だとしたら確実に行われなければならない処理をデストラクタに書くことはできないと思うのだけど。
0495デフォルトの名無しさん2008/06/21(土) 23:10:12
デストラクタからcloseとかの後始末関数を呼べばいいよ。
scope変数に入れたときは、必ずスコープアウトするときにデストラクタ呼ばれるから。
0496デフォルトの名無しさん2008/06/21(土) 23:15:25
C++で言うところの純粋仮想関数のように、
抽象クラス側のメンバ関数定義において
派生クラスで必ず上書きをする事を明示する修飾子ってありますか?
0497デフォルトの名無しさん2008/06/21(土) 23:19:56
abstract
0498デフォルトの名無しさん2008/06/21(土) 23:26:36
>>497
ありがとうございます!
0499デフォルトの名無しさん2008/06/21(土) 23:27:51
abstract属性
0500デフォルトの名無しさん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 のあたりの仕組みが全く理解できない
0501デフォルトの名無しさん2008/06/22(日) 05:45:30
OutputStreamを継承して、複数のOutputStreamに流し込むようなオブジェクトを作ればいいのでは?
http://codepad.org/hco2juAc
0502デフォルトの名無しさん2008/06/22(日) 07:15:28
std.algorithmって今のところ配列にしか使えない?
自作のコンテナでも、イテレータ定義すれば使えるのかなと思ったんだが、そもそもイテレータの作り方がよくわからん。
opStarAssignとかないし。
0503デフォルトの名無しさん2008/06/22(日) 11:34:52
>>502
それ、以前調べたけどまだ無理だと思う。
std.algorithm の中でイテレータに対して foreach range 文を使ってるんだけど
現状では foreach range 文をカスタマイズできないから、独自イテレータを定義できない。
05045002008/06/22(日) 13:27:30
>>501
おお、わざわざ�dクス。その方向でいってみるよ、ありがとう。
05055002008/06/22(日) 17:02:06
あやしい InputFilter を作ることで、どうやらやりたいことが出来たみたいだ。
改めて>>501に�dクス。
ttp://codepad.org/FtRWpF3b
0506デフォルトの名無しさん2008/06/22(日) 19:23:09
ConduitとStreamってどう違うの?
0507デフォルトの名無しさん2008/06/22(日) 22:13:10
IConduitはInputStreamかつOutputStreamなのだから、同じなんじゃないかと。
ただ、どうやらConduitがベースになってて、他の便利なストリームに突っ込んで使うのがいい感じらしい。
Conduitは「入出力先」、Streamは「使い方」みたいな使い分けなんじゃないかと思う。
あと、InputStreamとOutputStreamはほかのStreamとは若干違って、Conduitの役割をInputとOutputで分割したようなものだと思って使ってる。
0508デフォルトの名無しさん2008/06/22(日) 23:15:20
>>503
なる。どうもありがとう。
……がっかりだーorz
0509デフォルトの名無しさん2008/06/23(月) 09:16:36
はぁ?手軽に最高速がDの売りなんじゃないですかぁ?
バカなの?

ぶっちゃけC++のほうが100万倍マシ
0510デフォルトの名無しさん2008/06/23(月) 09:22:31
ええ全く、ウォルタンに言ってやってくださいよー
0511デフォルトの名無しさん2008/06/23(月) 09:25:52
>>509
元ネタはRubyだったのに何でC++に変えたの?
0512デフォルトの名無しさん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みたいにしたいのですが。
0513デフォルトの名無しさん2008/06/23(月) 14:02:24
public import a, b;
とかかな。
調べずに発言
0514デフォルトの名無しさん2008/06/23(月) 14:43:31
文字配列の連想配列の配列の配列の長さを変えるにはどうしたらいいのでしょうか
int main(){
char[][char[]][] list;
list.length = 100;
return 0;
}
とすると途中で止まってしまいます。
どのようにしたら止まらせずにlistの長さを伸ばしたり縮めたりできるのでしょうか
05155142008/06/23(月) 14:46:04
すみません既出のバグなんですね…
>264試してみます
05165142008/06/23(月) 15:04:03
すみません、やっぱり分からないです
nullで埋めるというのも分かりません
list[0] = null; とやっても使えないですし

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

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


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

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

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

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

何で初期値指定すると動くのかとかはよく分からんが
0532デフォルトの名無しさん2008/06/24(火) 15:15:58
>513
できました!ありがとうございます。
0533デフォルトの名無しさん2008/06/24(火) 17:30:23
>>531
本来、nullと長さ零の配列は同じ扱いのはずなんだけどねえ
0534デフォルトの名無しさん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
}
0535デフォルトの名無しさん2008/06/24(火) 22:30:46
>>533
最初の頃はそういってたけど、いつの間にか仕様が変わったらしい。
0536デフォルトの名無しさん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();
 }
}
0537デフォルトの名無しさん2008/06/25(水) 11:28:43
>>536
ttp://www.kmonos.net/alang/d/2.0/class.html#nested
0538デフォルトの名無しさん2008/06/25(水) 11:50:47
>>537
ありがとうございます。
this.outer.Value_ でいけました。
0539デフォルトの名無しさん2008/06/25(水) 13:42:23
そういえば outer ってキーワードなのな
0540デフォルトの名無しさん2008/06/25(水) 20:34:50
conceptまだー?
0541デフォルトの名無しさん2008/06/26(木) 01:31:03
http://image.blog.livedoor.jp/warosmania/imgs/0/6/063e2fb7.jpg
0542デフォルトの名無しさん2008/06/26(木) 01:38:53
何やらブラクラ危険と専ブラが教えてくれるのだが
0543デフォルトの名無しさん2008/06/26(木) 08:44:44
>>542
心霊写真と見せかけてしばらく見てると白粉野郎がアップになるやつ。
0544デフォルトの名無しさん2008/06/26(木) 16:03:15
しばらくってほど時間が経過しないのがなんだかな
じーーっくりと見させてからやった方がダメージ大きいのに
0545デフォルトの名無しさん2008/06/26(木) 16:27:51
専ブラによってはアニgifのサムネイルが最後の1枚になってたりして効果ない
びびったけど
0546デフォルトの名無しさん2008/06/28(土) 02:31:24
>>541
びびった。だがD関係ねーや。

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

まあそれはさておき、バイナリ吐く言語使いたいなら素直ににC/C++やった方がいいと思うんだ
0558デフォルトの名無しさん2008/06/28(土) 21:49:54
>555
初のコンパイラ方式をDにするのはやめたほうがいいのではないかと。
CかJavaかC#が良いと思う
Dは、ある程度以上の実力者が戯れるのには最適な言語だと思う
0559デフォルトの名無しさん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;
}
0560デフォルトの名無しさん2008/06/28(土) 22:04:41
Java出身者にはテンプレートが魔法に見えるから困る
これだけでチューリング完全とかw
0561デフォルトの名無しさん2008/06/28(土) 22:11:52
なんというか、There's more than one way to do itって感じになってきたな…
0562デフォルトの名無しさん2008/06/29(日) 00:37:59
もともとそういう志向はなきにしもだったからな
でもテンプレート周りとかconst周りはmore than one wayだけでもないぜ。
コンパイル時に決定可能かどうかという重大な違いがある
05635552008/06/29(日) 00:48:50
色々ありがとうございます。
言語仕様や標準ライブラリにいろいろけちつけるのは愛の鞭だったんですね。
初のコンパイラ型言語ってわけでもないので(Cを一通り。MinGWのWindows SDKにあちこち不備があるのが鬱陶しくなってやめた)
忠告を聞かずにDの世界に飛び込んでみます。
0564デフォルトの名無しさん2008/06/29(日) 00:55:09
>不備があるのが鬱陶しくなってやめた
ここがひっかかるw
Dはそんなのの塊のような気がす
0565デフォルトの名無しさん2008/06/29(日) 01:02:32
ゲーム作るのでなければwxDを使えばいくらか幸せになるかと
0566デフォルトの名無しさん2008/06/29(日) 01:24:57
>>564
> >不備があるのが鬱陶しくなってやめた
> ここがひっかかるw
w
まああの頃とは一味違うつもりなんで……不備は自分でどうにかできる、といいな。
>>565
GUIツールキットってメモリ喰いであまりいいイメージないんですよね。
せっかくWindows API結構覚えてるんで生で頑張ります。

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

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

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

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

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

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

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

il|li orz il|li
06036012008/07/02(水) 17:45:01
自己解決。
良いわけないですね。コンパイルエラーになりました。
0604デフォルトの名無しさん2008/07/02(水) 17:49:37
>>602
あらぁ…w
0605デフォルトの名無しさん2008/07/02(水) 20:06:05
東京でやってくれるなら喋りに行くのに。
0606デフォルトの名無しさん2008/07/02(水) 20:37:56
ネタがないっす
0607デフォルトの名無しさん2008/07/02(水) 20:40:31
英語ミリ
0608デフォルトの名無しさん2008/07/02(水) 21:52:24
>>602
え?どうせ行くつもりなかったけどいつ募集してたの?
0609デフォルトの名無しさん2008/07/02(水) 21:57:19
>>608
普通にずっとNGで募集してたと思うが。
0610デフォルトの名無しさん2008/07/03(木) 21:56:38
更新まだー?
0611デフォルトの名無しさん2008/07/04(金) 01:03:37
おまいらNGって何で読んでる?
0612デフォルトの名無しさん2008/07/04(金) 02:46:14
俺はfirefox
0613デフォルトの名無しさん2008/07/04(金) 06:42:09
thunderbirdで読んでる
0614デフォルトの名無しさん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);
}

のような事をやりたいのですが。
0615デフォルトの名無しさん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とかいまさら使いたくないし
0616デフォルトの名無しさん2008/07/04(金) 17:08:14
時間ないから簡単に
前者はmixinで文字列生成
後者は
static bool Func(int Value)(int Src){return Src < Value;}
eliminate!(Func!(10))(Nums)
とか?
試してないから間違ってたらごめん
0617デフォルトの名無しさん2008/07/04(金) 17:10:44
ええい
mutable typeからinvariant typeへは明示的な変換が必要だからidup
string s = stream_.readLine().idup;
06186152008/07/04(金) 17:45:28
>>617
っていうか標準ライブラリなんだからinvariant仕様に直しとけと言いたい
Fileをカプセル化した自前クラスで美味しくいただけそうです
0619デフォルトの名無しさん2008/07/04(金) 21:35:03
std.stringは全部をconst(char)[]にしてもらいたい
更新まだかなぁ・・・
0620デフォルトの名無しさん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);
}
0621デフォルトの名無しさん2008/07/04(金) 23:55:51
>>616
後者は動きました。
>614のコードにはめると
eliminate!(Func!(Value))(Nums)
で動きますね
0622デフォルトの名無しさん2008/07/05(土) 01:33:35
Valueを用意する必要がないのでは?
あえて定数に名前を付けたいのなら enum Value = 3; をおすすめ
0623デフォルトの名無しさん2008/07/05(土) 01:34:07
あと std.bind はずっとぶっこわれ中
0624デフォルトの名無しさん2008/07/05(土) 11:41:28
lazyな引数を関数外部に持っていく方法あったら教えてくれ〜
0625デフォルトの名無しさん2008/07/05(土) 13:46:31
void delegate() dg;
void func(lazy void a) {
dg={return a;};
}

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

void func(void delegate()[] a...);
でも使っとくといいと思う。
06266142008/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);

のようなことがやりたいのです。
0627デフォルトの名無しさん2008/07/06(日) 01:47:05
謎さんとこのstd.expressionとか。
0628デフォルトの名無しさん2008/07/06(日) 01:49:21
phobosのstd.algorithmはコンパイル時に決定してる関数しか受け付けないから不便だな。
とっとと、static引数導入してオーバーロードで関数ポインタとかも取れるように整理してほしいわ
0629デフォルトの名無しさん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));
}
0630デフォルトの名無しさん2008/07/06(日) 03:12:21
closureあるから
int j = 3;
auto less = (int i){return i<j;};
これできるよ
0631デフォルトの名無しさん2008/07/06(日) 03:26:59
名前が付いてないとダメだってのは使い勝手が悪いな
0632デフォルトの名無しさん2008/07/06(日) 08:29:38
俺もそう思ってたが実は無名関数でもいけてる件
0633デフォルトの名無しさん2008/07/06(日) 13:14:43
>>632
コードplz
0634デフォルトの名無しさん2008/07/06(日) 16:05:28
>>629のこれのことなのだが
writefln(removeIf!((int i){return i<4;})(arr));
もしかしてphobosの話だろうか
0635デフォルトの名無しさん2008/07/06(日) 17:20:20
こないだのアップデートからリテラルのaliasも取れるようになったんだっけか。
0636デフォルトの名無しさん2008/07/06(日) 19:50:48
ああそれでか
0637デフォルトの名無しさん2008/07/06(日) 21:17:26
連想配列の clear ってどうやるですか?
0638デフォルトの名無しさん2008/07/06(日) 21:33:51
新しいのと取り替えればいいんじゃない?
0639デフォルトの名無しさん2008/07/06(日) 22:03:14
これでよくなかったっけ
int[int] a = [1:1];
writefln(a);
a = null;
writefln(a);
0640デフォルトの名無しさん2008/07/06(日) 22:23:11
それは空のと取り替えただけでクリアしたと言えるかは疑問だな。
もとのaの参照をどこかで持ってれば、そっちはクリアされないわけだし。
0641デフォルトの名無しさん2008/07/06(日) 22:38:19
foreach (key; aa.keys)
  aa.remove(key);
じゃダメ?
0642デフォルトの名無しさん2008/07/07(月) 02:05:06
2.016まだかよー
0643デフォルトの名無しさん2008/07/07(月) 13:24:28
>629
やりたかったのはまさにこれです。
ばっちりです。ありがとうございました。
0644デフォルトの名無しさん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言語で参照返しする場合ってどうやるのでしょうか。
0645デフォルトの名無しさん2008/07/07(月) 14:22:17
もうすぐTango 0.99.7リリース来そうですね。
http://twitter.com/larsivi/statuses/851357615
0646デフォルトの名無しさん2008/07/07(月) 14:58:32
>>644
Nums ~= 4; の直前と直後の配列のポインタを見てみるとわかるけど、インスタンスが変わっちゃってる。
# ということは、 ~= の演算子は配列のインスタンスに対する捜査ではなくて、配列のインスタンスを保存している変数に対する操作っていうこと…かな?
classの場合は普通に返せる。配列だけは操作するときにインスタンスが同じものになるかどうか注意しなきゃいけない。
# 配列の要素を増やす時は違うインスタンスになる場合があって、配列の要素を減らす場合にはインスタンスは変わらない。
tangoのArrayBagみたいなクラスでラップすると幸せになれるかもしれない。
0647デフォルトの名無しさん2008/07/07(月) 15:09:35
Core2DuoE6600の環境なんだけどstd.cpuid.amd64がtrue
笑っちゃった。俺の環境がおかしいのか?
0648デフォルトの名無しさん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がちゃんと返した配列のポインタを追ってくれるのかが不安だったり。
うーん、いまいち配列の扱いがわからない。

やはりクラスでラップするのが安全なのかなぁ。
0649デフォルトの名無しさん2008/07/07(月) 16:13:58
たぶん勘違いしてる、というか俺の伝え方が悪かった。すまん。
配列のポインタは Nums.ptr これで得られる。
http://codepad.org/tvVXZGEx
↑を参考にするとわかると思う。
# ちなみに、容量をリザーブしておくとインスタンスが変わらない。
# コメントアウトをはずすと同じポインタになる。
0650デフォルトの名無しさん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の指す配列が他の変数によって参照されてたりするとやっかいな問題になると思う。
0651デフォルトの名無しさん2008/07/07(月) 16:50:42
>>647
AMD64とEM64Tってほぼ互換じゃなかったっけ
0652デフォルトの名無しさん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

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

http://codepad.org/Kg0yzNfz
みたいに引数にリファレンスで渡した場合は追加されるので、それと
同じ事が返値でもできればいいのですが。
C++のように返値のリファレンス指定でできないんですねぇ。
0655デフォルトの名無しさん2008/07/07(月) 18:29:01
std.xml、マニュアルにあるサンプルプログラムちゃんと動く?
どうしてもうまく動かない・・・
2.0.15です
0656デフォルトの名無しさん2008/07/07(月) 18:50:59
前に誰かがstd.xmlが動かなくなったって言ってたような・・・
trunk版でも無理なのだろうか
0657デフォルトの名無しさん2008/07/07(月) 19:23:54
>>654
>C++のように返値のリファレンス指定
俺もこれほしいかも
というか、参照とかポインタとかはC++のほうがわかりやすくて好きだ…
0658デフォルトの名無しさん2008/07/08(火) 00:43:38
(関数ポインタを除く)
0659デフォルトの名無しさん2008/07/08(火) 00:57:05
>>645
linux環境だと、Theadクラス使うと落ちまくってとても使えたものじゃないのだが、
いつになったら直るのだろうか・・・
0660デフォルトの名無しさん2008/07/08(火) 13:22:48
>>645
ん、まさか tnago に DBI でもマージするつもりなのか…
アレの SQLite バインディングは動かないコードのまま trunk に放置されてるからなぁ…
0661デフォルトの名無しさん2008/07/09(水) 00:02:39
>>645
じゃあ、0.99.7に移行する前に破壊的変更の予習。
http://www.dsource.org/projects/tango/wiki/0_99_7_BreakingChanges
今回多いなw
0662デフォルトの名無しさん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.
ここら辺はかなり厳しそうだな。
0663デフォルトの名無しさん2008/07/09(水) 02:17:16
phobosのtrunkが大量に更新されてる件
0664デフォルトの名無しさん2008/07/09(水) 02:24:07
あ、やべぇ、なんかTangoのD2.0のマージ来た…!?
http://www.dsource.org/projects/tango/browser/branches/experimental/D2.0
0665デフォルトの名無しさん2008/07/09(水) 03:23:46
暴走するのはPhobosだけにしてくれよ…
0666デフォルトの名無しさん2008/07/09(水) 03:34:05
これはDコミュニティの文化だよ
0667デフォルトの名無しさん2008/07/09(水) 04:46:53
>>664 キタ━(゚∀゚)━!!
0668デフォルトの名無しさん2008/07/09(水) 11:04:08
PhobosとTangoがなかよくなりますように・・・
0669デフォルトの名無しさん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

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

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

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

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

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

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

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

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

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

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

>>340(いつからなおってたんだー!?)
やっと2.0系に復帰できるワァ
0693デフォルトの名無しさん2008/07/12(土) 01:41:01
>>692
半年前には大丈夫っだった気がするが、
使ってるAPIの差かもしれん
0694デフォルトの名無しさん2008/07/12(土) 06:31:50
>>692
DMD2.016でまたむりぽ
0695デフォルトの名無しさん2008/07/12(土) 07:25:41
>>692
半年前には直ってたものを壊れた瞬間に知るとかw
0696デフォルトの名無しさん2008/07/12(土) 07:28:55
型なのに型として認識してくれなくてやってた苦肉のtypeof(型)ができなくなってるね
元々の問題が修正されたのならいいのだけど
0697デフォルトの名無しさん2008/07/12(土) 10:44:36
DMD 2.017 リリース
0698デフォルトの名無しさん2008/07/12(土) 11:16:58
>>697
まじだ
バグフィックスだけだね
0699デフォルトの名無しさん2008/07/12(土) 15:04:08
Webから画像ダウンロードできたりしますか
0700デフォルトの名無しさん2008/07/12(土) 15:27:12
できる。
0701デフォルトの名無しさん2008/07/12(土) 21:05:40
>>678
だからUTF-8でない文字列をchar*に入れるなとあれほど…
0702デフォルトの名無しさん2008/07/12(土) 21:12:50
mbsはubyte*にするべきだったりするの?
0703デフォルトの名無しさん2008/07/12(土) 21:14:19
>>702
もちろん
0704デフォルトの名無しさん2008/07/12(土) 22:16:11
charはutf-8って規格で決まってるからな−。
それ以外が入ってるのは気持ち悪いというか、間違っているという話。
0705デフォルトの名無しさん2008/07/12(土) 23:09:10
>>678 >>701-704
こういう案はどうなの?
ttp://rayerd.ddo.jp/pukiwiki/ingwiki/index.php?D%B8%C0%B8%EC%A4%C8MBCS%A4%CE%CF%C3
0706デフォルトの名無しさん2008/07/13(日) 00:35:33
もうstd.encodingがあるしやるならその上に作るべきでは
0707デフォルトの名無しさん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);
でコンパイル通るように直したほうがいい。
0708デフォルトの名無しさん2008/07/13(日) 01:23:06
Dで外部アプリの実行とかってどうやればできますか。
0709デフォルトの名無しさん2008/07/13(日) 01:27:03
>>707 ノ
>>708
import std.process;
std.process.system("dir");
0710デフォルトの名無しさん2008/07/13(日) 01:31:20
>>706
正直申し上げますと、あれインターフェイスが糞すぎる
0711デフォルトの名無しさん2008/07/13(日) 01:34:08
>>709
あ・・・ありがとう。
CreateProcess使ってできてやったーとか思ったらそんな簡単に・・・
0712デフォルトの名無しさん2008/07/13(日) 01:35:03
std::basic_stringの仕組みを丸ごと移植したらどうかと思うのだが
0713デフォルトの名無しさん2008/07/13(日) 01:44:57
>>707
> MultiByteToWideChar(codePage, 0, sz.ptr, sz.length, result.ptr, result.length);
> でコンパイル通るように直したほうがいい。
え・・・そんなんできんの・・・
0714デフォルトの名無しさん2008/07/13(日) 02:02:06
OpenGLのポーティング、D2.0でもデフォのまま使えるようになったのね
さっき最新取ってきて直そうと思ったら、既に修正済・・・感動した
0715デフォルトの名無しさん2008/07/13(日) 02:07:24
Linux系でD言語やろうと思ったらここ見ればいいってHPないですかね。
0716デフォルトの名無しさん2008/07/13(日) 02:07:29
>>713
???
0717デフォルトの名無しさん2008/07/13(日) 02:11:21
>>716
MultiByteToWideChar(codePage, 0, sz.ptr, sz.length, result.ptr, result.length);
キャストなしのこれをコンパイルエラー出さずに書くやり方があるのかなと
0718デフォルトの名無しさん2008/07/13(日) 02:50:24
もうperlみたいにしてしまえ
0719デフォルトの名無しさん2008/07/13(日) 04:22:25
tangoのProcessってサンプル使ってもうごかないんすけど。
0720デフォルトの名無しさん2008/07/13(日) 04:25:54
よくあること
0721デフォルトの名無しさん2008/07/13(日) 04:41:14
Executeしないと動かなくなってた><
0722デフォルトの名無しさん2008/07/13(日) 05:20:48
HttpClientのGetResponseが爆発してて自分の手に負えません。

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

このままバージョンが変わらないでいてくれたら
D-1とかD-2とかいう扱いでコードの配布が安定できて嬉しいな
0730デフォルトの名無しさん2008/07/13(日) 19:00:23
D2.0が安定化するころにはD3.0が登場してて阿鼻叫喚になってると予想してみる
0731デフォルトの名無しさん2008/07/13(日) 19:02:17
メジャーバージョンアップ=仕様の確定=完全な互換性の断ち切り
0732デフォルトの名無しさん2008/07/13(日) 19:06:18
phobos vs tango
d1.0 vs d2.0
で組み合わせが四通りあるから困る
d1.0+phobosで開発してきたが、tangoのFiber使いたい俺としては
せめてphobosとtangoが共存してくれれば...
0733デフォルトの名無しさん2008/07/13(日) 19:12:06
http://codepad.org/biiWqnSH
FizzBuzz書いてみたいがtoStringってコンパイル時に動かないんだな
0734デフォルトの名無しさん2008/07/13(日) 20:00:40
>>733
っ std.metastrings
0735デフォルトの名無しさん2008/07/13(日) 20:07:07
DだとFizzBuzzを最小何文字で作れるんかな
ちなみに俺は140文字だった
0736デフォルトの名無しさん2008/07/13(日) 20:18:48
>>735
http://www.shinh.org/p.rb?FizzBuzz#D
に83バイトという記録がある。
いったいどんなコードなのやら。
0737デフォルトの名無しさん2008/07/13(日) 20:24:29
>>730 それは>>731から本望 QED
>>732 tangoがphobos準拠じゃないのが悪いんだよ
なんで自作ライブラリごときが標準ライブラリと共存できないんだってことだよw
0738デフォルトの名無しさん2008/07/13(日) 20:33:21
tangobosは?
0739デフォルトの名無しさん2008/07/13(日) 20:40:02
>>737
tangoはGCや配列キャストなどの言語の基幹部分も独自に持っていて、
phobosを置き換えるのが目的で作られてるから、共存できなくて当然。
0740デフォルトの名無しさん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");}
0741デフォルトの名無しさん2008/07/13(日) 21:44:04
>>740
printf使えばもっと短くできるんじゃない?
0742デフォルトの名無しさん2008/07/13(日) 21:55:04
>>739
じゃあphobosが言語の基幹とライブラリの機能分担に失敗してる?
0743デフォルトの名無しさん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文字なんて…
0744デフォルトの名無しさん2008/07/13(日) 23:16:42
>>732
D言語研究室にファイバあった。
前に試したけど、ファイバの部分だけならコンパイル通るようにするのはそれほど難しくない。
0745デフォルトの名無しさん2008/07/14(月) 01:40:53
d で windows アプリケーションを作るときに XP のビジュアルスタイルを当てる方法をおしえてください
0746デフォルトの名無しさん2008/07/14(月) 02:13:17
マニフェスト作ればいいんじゃないの。
詳しくしらんが。
0747デフォルトの名無しさん2008/07/14(月) 02:26:09
%03dとかやれる関数ってないっすか。
0748デフォルトの名無しさん2008/07/14(月) 02:35:44
std.string.format
0749デフォルトの名無しさん2008/07/14(月) 03:12:25
std.c.stdio.sprintfでおk
0750デフォルトの名無しさん2008/07/14(月) 03:53:45
tangobos で tango と phobos を同時に使うと、無駄に富豪的な気分がするぜ
0751デフォルトの名無しさん2008/07/14(月) 08:10:02
tangoではないんでしょうか。

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

問題が出たとしても、そういうことの解決をやるのがtangobosっていう擦り合わせのプロジェクトですよ。
0755デフォルトの名無しさん2008/07/14(月) 13:43:00
やっぱ、tangobosって方向性として間違ってるよなw
0756デフォルトの名無しさん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>
0757デフォルトの名無しさん2008/07/14(月) 15:07:12
>>752
そうだったんですか。
ありがとうございました。
0758デフォルトの名無しさん2008/07/14(月) 21:04:15
こんなところ見つけた。
http://www5.atwiki.jp/yaruhara/pages/74.html
0759デフォルトの名無しさん2008/07/14(月) 23:56:39
>>758
かなり気合入ってるな
0760デフォルトの名無しさん2008/07/15(火) 05:11:03
ディレクトリ系の例外拾うと、システムの日本語が入ってるせいか文字化けするんですが、
誰か治し方しりませんか。
0761デフォルトの名無しさん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したデータが壊れてしまってるようです。

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


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

codepadはmetastrings使えないんだな
tangobos使ってるみたいだがバージョンが古いんだろうか
0770デフォルトの名無しさん2008/07/16(水) 11:58:19
>769
std.string.toString() 使えば、toStr 要らなくね?
0771デフォルトの名無しさん2008/07/16(水) 13:12:32
おこられたhttp://codepad.org/jHEx9kA5
0772デフォルトの名無しさん2008/07/17(木) 15:20:06
配列の末端から取り出すのって皆さんどうやってますか?
0773デフォルトの名無しさん2008/07/17(木) 15:45:37
リバースして、ふぉーいーちにかけるか、ふぉーで配列の要素数-1から逆順でとる。
それ以外ってあるかなぁ。
0774デフォルトの名無しさん2008/07/17(木) 15:52:21
foreach_reverseがあるのに,なんでわざわざreverseするのん?
0775デフォルトの名無しさん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.

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

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

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

Win32 のサンプルが動かないとか心が折れそう。
0795デフォルトの名無しさん2008/07/21(月) 23:59:48
>>794
WinMainを使わずにmainを使えばいい。
インスタンスハンドルが欲しければGetModuleHandleで得られるし。
07967942008/07/22(火) 00:15:22
>>795
本当はDLLを作りたいんだけど、DllMainのgc_initでこけてたので、
前段階としてWinMainで実験してみて、うまくいってないという話。
DLL以外ならmainでいいんだけどね。
紛らわしくてスマソ。
0797デフォルトの名無しさん2008/07/22(火) 13:08:40
うぉるたんインタヴュー
http://www.techworld.com.au/article/253741/a-z_programming_languages_d
0798デフォルトの名無しさん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.

らしいですよ。
07997942008/07/22(火) 20:06:30
自己解決。
スレ汚し失礼しました。
0800デフォルトの名無しさん2008/07/22(火) 21:18:13
自己解決したらちゃんと解決方法も書きなさい
08017942008/07/22(火) 21:21:15
http://www.digitalmars.com/d/archives/D/gnu/creating_static_dynamic_lib_minit_remains_unresolved_2367.html

DigitalMarsで検索してたら普通にあった。
0802デフォルトの名無しさん2008/07/23(水) 18:22:54
http://www.vimeo.com/1364875
http://www.n-brain.net/
これ使ったことある人いるかな
0803デフォルトの名無しさん2008/07/23(水) 18:26:45
うお、まだ配布されてなかった
すまn
0804デフォルトの名無しさん2008/07/23(水) 19:58:27
>>797
そういえばウォルタンの顔を見たことがなかったという衝撃
0805デフォルトの名無しさん2008/07/23(水) 21:59:17
髭がないのがD言語普及の妨げになってるんだよな。
0806デフォルトの名無しさん2008/07/23(水) 22:06:10
懐かしいな
http://slashdot.jp/article.pl?sid=08/04/30/0830201
0807デフォルトの名無しさん2008/07/23(水) 22:13:17
やはりここはウォルたんにも髭を・・・・・
0808デフォルトの名無しさん2008/07/23(水) 22:14:59
>>806
ハゲである必要はないんか?
0809デフォルトの名無しさん2008/07/23(水) 22:16:45
ハゲると言語仕様が複雑に・・
0810デフォルトの名無しさん2008/07/23(水) 22:19:03
ウォルたんの頭髪大ピンチ!
0811デフォルトの名無しさん2008/07/24(木) 06:13:13
髭を剃ることを暗に明に強制されるような環境で、
好きに言語を設計するような仕事はできないという点では明察なんだよな。
その意味でウォルたんは好きに言語を設計してると思うから問題ない
0812デフォルトの名無しさん2008/07/24(木) 06:36:53
いくらなんでもこじつけだろと思ったが三行目で吹いた。
確かに好きに設計してるなwwww
0813デフォルトの名無しさん2008/07/24(木) 09:34:07
をるたん・ぶらいと
0814デフォルトの名無しさん2008/07/24(木) 10:55:23
うぉるたんって60才ぐらい?
0815デフォルトの名無しさん2008/07/24(木) 12:46:45
永遠の17歳
0816デフォルトの名無しさん2008/07/24(木) 15:21:05
>814
http://www.walterbright.com/ によると
「1979年にカリフォルニア工科大を卒業した」そうだから、
50代前半じゃね?
0817デフォルトの名無しさん2008/07/24(木) 15:21:06
caltechを1979に卒業と書いてあるので、
だいたい50〜55くらいの範囲だな
0818デフォルトの名無しさん2008/07/24(木) 18:31:20
仲いいなお前らwww
0819デフォルトの名無しさん2008/07/24(木) 18:35:16
この一連の流れを/.本家へ投稿してみたいところだな
0820デフォルトの名無しさん2008/07/24(木) 22:48:31
>>819 やめろww
0821デフォルトの名無しさん2008/07/25(金) 00:00:46
バージョンアップがこなさすぎる…
最後にリリースされたのいつだよ…
0822デフォルトの名無しさん2008/07/25(金) 00:24:30
一連の流れから分かったこと
・D言語に足りないのは髭
0823デフォルトの名無しさん2008/07/25(金) 01:17:17
じゃあ今度からD言語ではhogeの代わりにhigeを使えばいい、というわけか。

module walter.hige;
int hige(){ return 0; }
0824デフォルトの名無しさん2008/07/25(金) 01:22:24
じゃあDのマスコットキャラに髭つけようぜ
0825デフォルトの名無しさん2008/07/25(金) 01:36:39
かっけーじゃん
0826デフォルトの名無しさん2008/07/25(金) 01:38:17
髭の長さ=Dのバージョン
0827デフォルトの名無しさん2008/07/25(金) 02:59:06
Visual studio並のIDE欲しい・・・
0828デフォルトの名無しさん2008/07/25(金) 03:46:48
IDEがあればD言語かつる
っていうか今や普及にIDEは必須だぜ・・・
0829デフォルトの名無しさん2008/07/25(金) 04:06:17
うぉるタンはベンツ乗り?
ttp://www.walterbright.com/garage/index.html
うぉるタンのひーお爺ちゃんは日本に来たよ
ttp://www.walterbright.com/trip/chas.html
ttp://www.norwichfreeacademy.com/fileadmin/user_files/museum/Spring_2007.pdf
ttp://www.norwichfreeacademy.com/fileadmin/user_files/museum/Website_pictures/Winter_2007.pdf
0830デフォルトの名無しさん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;
}

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

map["name"]でエラー
0837デフォルトの名無しさん2008/07/25(金) 16:20:50
>>835 そもそも完成なんて概念は存在しないというのは言ってはいけないのかもしれんが言っちゃった
0838デフォルトの名無しさん2008/07/25(金) 17:31:44
>>834
別にウォルたんに作れとは言わんw
0839デフォルトの名無しさん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をみんなに広めてやろうっていう野心が足りないんだな。
0840デフォルトの名無しさん2008/07/25(金) 18:54:57
生粋の技術屋なんだな
0841デフォルトの名無しさん2008/07/25(金) 19:15:06
うぉるたんには髭の生えた参謀役が必要なんだな
0842デフォルトの名無しさん2008/07/25(金) 22:14:45
Tango 0.99.7 Dominik released
0843デフォルトの名無しさん2008/07/26(土) 00:18:53
Dらしいboost::tupleを作ったはいいけど、コード補完のメンバ一覧が出たとたんIDEが落ちるw
0844デフォルトの名無しさん2008/07/26(土) 00:27:03
このスレよりもD言語について盛んに議論されてる場所ってある?
少なくともうぉるたんについてはこのスレが一番だと思うが。
0845デフォルトの名無しさん2008/07/26(土) 02:08:44
日本にはないと思う
0846デフォルトの名無しさん2008/07/26(土) 02:25:29
D1.028 phobos の std.cover の setDestDir(char[]) 関数なんだけど、

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

になってるんだけど、

 dstpath = pathname;

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

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

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

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

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

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

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

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

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

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

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

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

みたいなやつじゃね
0862デフォルトの名無しさん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))

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

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

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

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

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

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

>>881
ちなみに双方向リンクリスト、つまりSTLのlistみたいなやつ
0883デフォルトの名無しさん2008/07/27(日) 22:46:18
Dの頭のままC#でdelegate使おうとしたら
いちいち宣言しなきゃいけないって面倒だなとおもた
0884デフォルトの名無しさん2008/07/27(日) 22:49:31
>>883
ラムダ式でおk
0885デフォルトの名無しさん2008/07/27(日) 23:03:16
C#3.0からFunc<,>とか使えるんじゃなかったっけ。
0886デフォルトの名無しさん2008/07/28(月) 00:33:49
GTK On Dって名前にすれば GOD ってライブラリ名にできるのにそういう風にしないのは
やはり向こうは日本と神の感覚が違うから気軽に使えないのかな
0887デフォルトの名無しさん2008/07/28(月) 00:57:59
こういう場合onっていう言い方は正しいのか?
あんまり聞かない気がする。
0888デフォルトの名無しさん2008/07/28(月) 01:01:34
じゃ featuring だ
0889デフォルトの名無しさん2008/07/28(月) 01:04:05
overとか
0890デフォルトの名無しさん2008/07/28(月) 01:08:01
ならopponだ
… oppon 〜は「…を〜と組み合わせて」という意味になる今作った単語
0891デフォルトの名無しさん2008/07/28(月) 01:14:40
oppai
なんでもできる証拠なの〜
0892デフォルトの名無しさん2008/07/28(月) 01:28:19
GTK of D
0893デフォルトの名無しさん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;
}
自分の実行ファイルのディレクトリのフルパスが欲しいとき、もうちょと短く書けないかな。
0894デフォルトの名無しさん2008/07/28(月) 05:11:20
http://www.digitalmars.com/d/archives/digitalmars/D/dwt/
dwtのはずなのにアナウンス
中身はちゃんと別みたいだけど
0895デフォルトの名無しさん2008/07/28(月) 16:00:33
std.openrjって、どうしてあるの?誰が使ってるの?
というか、動かないんだけど
0896デフォルトの名無しさん2008/07/28(月) 16:15:14
もうなくなるor/andなくなったんじゃなかったのか
0897デフォルトの名無しさん2008/07/28(月) 17:49:37
>893
記述が長ったらしい代わりにバイナリが小さくなるのがTangoの芸風でしょ。
ちなみにPhobosなら import path; して dirname(rel2abs(args[0])) だ。
0898デフォルトの名無しさん2008/07/28(月) 23:53:45
1.0 と 2.0 の違いって何?

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

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

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

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


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

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

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

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

static opCallで代用するしかないんじゃね
0944デフォルトの名無しさん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
0945デフォルトの名無しさん2008/08/01(金) 19:22:41
いけね、ファイルを分けなくても再現した。

void line(uint lineNum = __LINE__){}
void main(){ line(); }
0946デフォルトの名無しさん2008/08/01(金) 22:10:27
2007年のカンファレンスで構造体にコンストラクタつけるとかなんとか言ってなかったか?
俺の記憶違いかな?
0947デフォルトの名無しさん2008/08/01(金) 23:16:19
リテラルあるしなあ……。
0948デフォルトの名無しさん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();
}

が正しいような気がする。
後者じゃないとビルドできないし。
0949デフォルトの名無しさん2008/08/02(土) 14:25:36
>>948
んなばかなあ
0950デフォルトの名無しさん2008/08/02(土) 14:35:23
>>948
何で前者でエラーになるのか知らないけど、staticは無いと断言できる。
0951デフォルトの名無しさん2008/08/02(土) 14:44:56
大体staticで何をカウントしてるんだ
0952デフォルトの名無しさん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プログラミングなんかしないから、
別に通ればなんでもいいのだが。
0953デフォルトの名無しさん2008/08/03(日) 13:39:36
さっきちょっと思いついたんだけど変数の変更を一時的に禁止する様な機能ある?

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

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

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

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

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

ここらへんの話です。
暑くて駄目だwww
0961デフォルトの名無しさん2008/08/03(日) 16:13:57
一時変数の名前はhigeを使ってください
0962デフォルトの名無しさん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);
}
0963デフォルトの名無しさん2008/08/03(日) 16:45:56
値型でもこう
int i=1;
g(i);
void g(const ref int i){
  i++; // error
}
0964デフォルトの名無しさん2008/08/03(日) 16:47:26
sakuraiさんが久しぶりにDの話題してるの見たw
0965デフォルトの名無しさん2008/08/03(日) 17:40:49
D1.0でこれって不正じゃないの?何でクロージャっぽい動作してるの?
http://codepad.org/TqJ2UHtm

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


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

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

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

しょぼーん

↓次スレよろ
0972デフォルトの名無しさん2008/08/04(月) 10:30:15
D言語 Part19
http://pc11.2ch.net/test/read.cgi/tech/1217813098/
0973デフォルトの名無しさん2008/08/04(月) 15:03:54
名前つき引数って採用できないのかなあ…
0974デフォルトの名無しさん2008/08/04(月) 15:42:42
構造体リテラル使ってお茶を濁すとか
0975デフォルトの名無しさん2008/08/04(月) 15:45:06
構造体リテラルは普通の関数呼び出しの構文だから名前つけれないよ…
名前かけるのは構造体イニシャライザか連想配列リテラル…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

9 :デフォルトの名無しさん [↓] :2008/08/06(水) 03:04:31
前スレっていつになったら埋まるの?
0999デフォルトの名無しさん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
前スレっていつになったら埋まるの?
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。