[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 08/05 14:43 / Filesize : 200 KB / Number-of Response : 965
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

D言語 Part18



1 名前:デフォルトの名無しさん [2008/04/14(月) 15:16:22 ]
プログラミング言語 D (D Programming Language) について語るスレッドです。
過去スレは >>2

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

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

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

■ IDE
ttp://dronten.googlepages.com/dscite (DSciTE)
ttp://forums.codeblocks.org/index.php?board=20.0 (Code::Blocks)
ttp://www.dprogramming.com/entice.php (Entice Designer)
ttp://www.dsource.org/projects/descent (Descent)
ttp://www.dsource.org/projects/poseidon (Poseidon)

29 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 21:11:32 ]
というか、もはやphobosまともに保守されてないだろ。
DMDと一緒に配布されてるphobosがコンパイル通らなかったりするし。

30 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 21:15:35 ]
ここなんのスレだったっけ?

31 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 22:27:47 ]
>>28
これが信者脳ってやつか

32 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 22:58:00 ]
>>26
>把握してないと
型のある言語だったら大抵そうじゃね?
const/invariantとか別れてるのはDくらいかもだけど

33 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 23:21:08 ]
引数の型ぐらいIDEが表示してくれるそれでいいんじゃね。

34 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 23:21:21 ]
>>32
動的型付け言語も仕様上型のない言語も、不適切な型や値を突っ込めば
実行時にコケるか結果がおかしくなるわけだから、なんにしろ確認は必須だよねえ。

とはいえ、言語の性能ってのはそれ自体の性能だけじゃなくて、実際にはエディタや
周辺環境の性能も関わってくるから、そのへん不足してるせいで>>26ってことなら、
まあD言語(の言語自身か周辺環境)が悪い、といっても間違いじゃないだろうけど。

35 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 23:22:51 ]
それよりも、参照渡しと値渡しの区別が呼び出し側でつかないのだけはどうにかして欲しい。

36 名前:22==26 mailto:sage [2008/04/19(土) 00:43:36 ]
>>28 それはひどい

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

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

>>32.34 最大の問題は関数の利用者が関数のために
明示的にdeep copyしないといけないところだと思えてきたよ
都合があるのは関数側なのにね
必要なら(.idupの代わりに)関数呼び出し直後に関数内で使う前にdeep copyして欲しい


37 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 00:54:15 ]
>>31
氏ねよカス(笑)



38 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 00:58:31 ]
最近の言語は文字列をimmutableな形式で持つことが多くなってきてるよね。

39 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 01:24:26 ]
std.stringなんかはinvariant(char)[]とconst(char)[]の両方のオーバーロードを提供すればいいんじゃないの。

40 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 08:00:13 ]
関数の引数ってconst()とrefとinとoutだけでいんじゃね?

41 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 10:54:42 ]
>>40
いいよな
俺はそうしてる

42 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:43:45 ]
>>40
www.kmonos.net/alang/d/2.0/const.html にあるように
エイリアシングの問題があるから、invariant引数は必要なところには
必要だと思う。

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

string,wstring,dstringの定義がphobosのObjectの項に書いてなかったりするし、
stringをinvariantにしたの忘れてるんじゃないかな。

43 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:56:03 ]
スライスを返したりする場合はinvariant必要不可欠だよね。
そこで例えばこういうふうにするのがいいと思う。

string[] split(const(char)[] str) {
return split(str.idup);
}
string[] split(invariant(char)[] str) {
return /*空白で区切ってスライスを返す*/;
}

もちろん例えばtolowerならinvariantのは定義せず、constだけでいい。

44 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 11:59:57 ]
> もちろん例えばtolowerならinvariantのは定義せず、constだけでいい。

引数をinvariantにすればtolowerは純粋関数になるから、
ある種の最適化ができる可能性があるよね。
そういう意味でこちらもやはり両方定義すべき。

45 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 12:08:46 ]
>>44
invariantとかconstとかは純粋関数かどうかには関係なくね?
(引数以外の環境に依存せず同じ結果になるから。)
マルチスレッド対応とかはtolowerでやることじゃないだろうし。。

46 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 19:52:35 ]
>>43
それいいな
でもそうなるとconst(char)[]版を書くの面倒
invariantにmutableを渡したらdeep ocpyするならこんな感じ

//alias invariant(char)[] string;
string[] split(string str);

string s = "foo";
char[] t = "bar";
string[] u = split(s);
string[] v = split(t); // deep copy implicitly

47 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 19:57:12 ]
>>43
転送する引数が一つならまだしも複数になったら
自分で転送関数を書くのはやだぞ



48 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 20:58:02 ]
>>46
プリミティブ型の配列ならそれでもいいけど、
オブジェクトの配列だったりすると何か問題が起こりそうな気が

49 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 21:23:08 ]
opInvariant()の出番ですね!

50 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 21:28:10 ]
その前にopCastを実用可能なものにしろと…

51 名前:デフォルトの名無しさん [2008/04/19(土) 21:57:26 ]
dmd1.028
static assert(is(void function()==function)); // static assert is false

なぜさ?

52 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 22:00:16 ]
>>51
void function()は関数ポインタ型

53 名前:51 [2008/04/19(土) 22:52:43 ]
>>52
アホな俺にも
static assert(is(void delegate()==delegate)); //ok
static assert(is(void function()==function)); // static assert is false
この違いが分かるように教えてくれまいか


54 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 23:02:57 ]
>>53
is(T==delegate) -- Tがデリゲート型
is(T==function) -- Tが関数型
void delegate() -- デリゲート型
void function() -- 関数ポインタ型

void f(){}
typeof(f) -- 関数型
typeof(&f) -- 関数ポインタ型

おk?

55 名前:51 [2008/04/19(土) 23:21:10 ]
>>52,54
static assert(is(typeof(void function())==function)); //ok
大変勉強になりました。

56 名前:51 [2008/04/19(土) 23:25:55 ]
↑失敗
void func(){}
static assert(is(typeof(func)==function)); //ok
ありがとうございました。


57 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 00:30:38 ]
俺も前それで1時間くらい悩んでしまったwww



58 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 00:35:25 ]
>>57
typeidで確認しろwww

59 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 11:54:17 ]
class A{}
void f(const(A) a){f(cast(invariant(A))a);} // ???
void f(invariant(A) a){}
配列のときは.idupでいいけど配列じゃないときはどうやってclone作ればいいの?
castしちゃまずいよね?

自前で.idup相当の処理を書かないといけないのかな
class A{invariant(A) iclone()const{return new invariant(A);}}
void f(invariant(A) a){}
void f(const(A) a){f(a.iclone());}

60 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 12:07:10 ]
それと配列でもこういうときは.idupできないけど
.dupとcast(invariant(TYPE)[])でいいのかな?
invariant(A)[] g(const(A)[] a){
 //return a.idup; // error
 return cast(invariant(A)[])a.dup;
}

61 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 12:09:27 ]
>>60
いや、よくない。
const(A)[]であるaの参照がどこかにある限り、
a.dupの要素のメンバは変更されうるから、
何らかの方法でAをディープコピーしないといけない。

62 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 13:43:53 ]
.dupってディープコピーじゃないの?

63 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 14:04:39 ]
std.contractだかなんだかにあるやつが
結局>>60な感じだったとおもったが

64 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 14:36:43 ]
>>62
まさか。全く同じ内容の配列を複製するだけだよ。

>>63
assumeUniqueだよね。
これはプログラマの良心によってinvariant性を担保するもので、
>>60のような場合に使うのは不味いね。

65 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 15:13:19 ]
D言語っていろんな仕様のバージョンがあって、
自分に合ったものを選んで使えば良いときいたんですけど本当ですか?

66 名前:60 mailto:sage [2008/04/20(日) 16:55:53 ]
>>61 確かにそうですね
まとめるとこんな感じでしょうか

class A{
int m;
this(int m){mem=m;}
 const A opClone(){return new A(mem);}
const invariant(A) opInvariantClone(){return new invariant(A)(mem);}
}
void f(A x);
void g(const(A) x);
void h(invariant(A) x);


67 名前:60 mailto:sage [2008/04/20(日) 16:56:27 ]
f(new A);
f(new const(A));//opClone()が暗黙的に呼ばれる
f(new invariant(A));//opClone()が暗黙的に呼ばれる

g(new A);
g(new const(A));
g(new invariant(A));

h(new A);//opInvariantClone()が暗黙的に呼ばれる
h(new const(A));//opInvariantClone()が暗黙的に呼ばれる
h(new invariant(A));



68 名前:60 mailto:sage [2008/04/20(日) 16:56:57 ]
//A x = new invariant(A);
// is as
//A x = (new invariant(A)).opClone();

//invariant(A) x = new A;
// is as
//invariant(A) x = (new A).opInvariantClone();

//これはうまくいくかどうかよくわからない
//invariant(A)[] copy(const(A)[] ar){
// return ar;
//}
// is as
//invariant(A)[] copy(const(A)[] ar){
// invariant(A)[] ret;
// foreach (e; ar) t ~= e.opInvariantClone();
// return ret;
//}

69 名前:60 mailto:sage [2008/04/20(日) 16:57:23 ]
opCloneが未定義のときにconst/invariant -> mutable
opInvariantCloneが未定義のときにmutable/const -> invariant
に変換しようとしたときは今までどおりエラーになって
参照型メンバのディープコピー忘れを防止・・・とか

なんていうかGCばんざい
__EOF__

70 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 17:02:49 ]
>>65 すぐ仕様が変わるだけで1.x系と2.x系のニ種類しかないよ

71 名前:デフォルトの名無しさん [2008/04/23(水) 02:40:09 ]
class child : private parent
{ ... }
この場合の private みたいに親クラスに属性つけるとどうなるんだっけ?
何も変わってないような気がするんだが。
export属性つけると怒られるし(dmd1.028に)。

72 名前:71 [2008/04/23(水) 03:30:19 ]
privateに関しては自己解決した。
お騒がせしました。

73 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 16:59:42 ]
静かだな

74 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:23:06 ]
そろそろ更新くるんじゃないかな

75 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 19:50:57 ]
何か難しいことでもしてるのかな

76 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:21:55 ]
いきなり3.0とかかw

77 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:24:42 ]
そして3.1でブレイクだな



78 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:26:22 ]
次は95とかですかね

79 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:30:41 ]
えっ、2095年?

80 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:51:05 ]
3/1に3.1、9/5に95ですね、わかります。

81 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 00:17:30 ]
え、それだけ言っておいてD2.013はスルーですか…?
Version D 2.013 Apr 22, 2008

82 名前:デフォルトの名無しさん [2008/04/25(金) 01:24:24 ]
>Html source files are now deprecated.
え?アレ?
密かに期待してたんだが、、俺だけだった?

83 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 01:51:11 ]
 ・opDotはopCastのように盲目的に特定の型のインスタンスへ転送する機能
 ・switchのcaseはconstかinvariantな整数型変数なら定数じゃなくともOK
 ・HTMLファイルにD言語のソース埋め込める機能は黒歴史
 ・pureとnothrowは書くだけ書けるようにしておいたけどまだ何も機能しないよ
 ・synchronized文あるからvolatile文は非推奨
 ・__thread記憶クラス実装したけど、言語上での表現はたぶん別の形になるよ
 ・関数オーバーロードで、派生クラスはより近い祖先の引数型にマッチするようになったよ
あたりが主な変更?
opCastといいopDotといい謎な仕様だと思った。

HTML埋め込みは、Dコンパイラにやらせるべき仕事じゃなかったんだろうな、と思った。

84 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 02:43:05 ]
opDotはalias thisみたいな匂いがするね

85 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 04:47:03 ]
>>83
switchのcaseはさりげなく面白い変更だな。
同じ動作だが基準がインスタンスごとに変えられるようになるのかな?

86 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 06:25:57 ]
switchはどうせなら文字列でも出来るほうが面白そうな気がする

87 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 08:45:43 ]
>>81
気づいてたら教えてくらさい



88 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 13:23:23 ]
何故だかキャッシュされててChangeLogの更新に気づかなかった。

// main.d
import test;

void main(){
 error();
}

// test.d
import std.stdio;

void error(string file = __FILE__, int line = __LINE__){
 writefln("Error: %s(%d)", file, line);
}

> Error: main.d(4)

おお、これでまともにUnitTest用ライブラリが書ける。

89 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 13:43:07 ]
>>86
switchの条件に文字列指定は前から出来るけど・・・

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

って書いてるし。

90 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 13:47:28 ]
>>89
>>86 はそういう意味じゃないだろ

>>83 の「switchのcaseはconstかinvariantな整数型変数なら定数じゃなくともOK」に対して,「const/invariantな文字列をcase文に使えたら面白い」という話だろ

91 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 14:21:51 ]
まあ多分こっちの意図と違う事言ってるだろうなと思いつつ勢いに任せて書いた。すまぬ。

92 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 07:31:21 ]
switch caseのconst変数について。
スタックにあるconstな変数は受け付けますが、
ヒープにある可能性のあるものは全部NGかなという感じです。
関数内(ネスト関数の外側関数含む)でconstな変数は受け付けますが、
クラスフィールド上でconstなものは受け付けません。

93 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 14:02:04 ]
D面白そうだからやってみたいんだけどオススメの本あったら教えて
英語か日本語の本で

94 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 14:13:24 ]
他の言語知ってるなら言語仕様のページ見るだけで十分だと思う。

95 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 14:19:32 ]
>>93
日本語の本で一番新しいのは『D言語パーフェクトガイド』。ただし古くて何の役にも立たない。
英語で最近出たのは『Learn to Tango with D』。まだ読んでないから内容の是非はわからない。

96 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 14:21:23 ]
D はリアルタイムで言語が大きく変わるから
ついていくには本なんて役に立たない

97 名前:93 mailto:sage [2008/04/27(日) 14:24:10 ]
learn to tango->ダンスの本かと思ってスキップしてた
amazonで買った



98 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 15:08:48 ]
Dの本って出版された時点で時代遅れになってそうだな。

99 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 15:10:25 ]
D 1.0 で止まっていいのなら何とかなりそうではあるが・・・
D 2.0 に興味があるなら本は無駄だと言わざるを得ない

100 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 15:30:26 ]
opDotって委譲しやすくするって認識でおk?

101 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 15:31:24 ]
>>100
No.
単一の型にしかforwardできないから何の役に立つのかさっぱり分からない。

102 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 15:38:18 ]
o.m

o.opDot!("m")
にでもなれば、いろいろ面白そうなのにな。

103 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 17:24:46 ]
>>102
なんにつかえるかわからんけど、おもしろそう

104 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 17:26:07 ]
>>102
関数の引数のstaticが来たらopDot("m")でいい気ガス。

105 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 18:05:18 ]
>>103
ActiveXのレイトバンディングとかに使えるかも。

106 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 03:29:47 ]
クラス関数を列挙して、それに対応する配列の擬似プロパティ版関数を作るテンプレートってありますか?
下記のような……

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



void fun(Foo[] foos, int n) {
foreach(foo; foos) fun(n);
}
...

107 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 18:42:57 ]
作れないことはないと思うけど、すごく汚いものになる気がする



108 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 19:25:13 ]
__traitsのallMembersやderivedMembersでメンバの名前を得られるから、
それらを関数かどうか判定して、それにあった関数定義を生成して…、
という形になるんじゃないかな。

109 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 20:29:22 ]
>New/Changed Features
>Hidden methods now get a compile time warning rather than a runtime one.

これうざす。
親クラスの関数をFinalにして回避してるんだけど
そもそもおれのクラスの設計がいけてないってことなのかなぁ・・・

110 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:06:04 ]
>>109
警告メッセージに「オーバーライドしてんのにoverrideついてないよ」
って書いてあるから、素直にoverrideつけりゃいいんじゃなかろうか。

111 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 06:18:29 ]
>>110
このケースのことじゃなかろうか

class A {
int foo(int a)
}

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

名前が一緒で引数の取り方が違う場合

112 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 17:04:35 ]
>>111
勘違いしてたわ。
なるほどオーバーロードの関係ね。

www.kmonos.net/alang/d/2.0/function.html で、
オーバーロードの解決時に基底クラスの関数を含めるにはalias使えとあるから、
class A{
int f(){ return 3; }
}
class B:A{
alias A.f f;
int f(int x){ return x*x;}
}
たぶんこんな感じでOK

113 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 21:44:13 ]
>>112
わっ本当だ!
ありがとうございます!

aliasの役割っておおいですね・・・

114 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:02:51 ]
使う場面は様々だけどそのスコープの特定の名前セットに
名前を追加するという役割は同じだよ

115 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 00:53:51 ]
dHell+DMD1.0でゲーム作るの楽しい!!!
/+D言語でハンガリアン記法どうしようか・・・うーむ+/

116 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 02:28:55 ]
>>115
dHellってdHell2じゃなくて?
無印の方はSDLとほぼ同等だと思ってたが

システムハンガリアンだったらダメ絶対
アプリケーションハンガリアンだったら推奨
ameblo.jp/argv/entry-10031517216.html

117 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 03:01:33 ]
アプリケーションハンガリアンもtypedefがあるからあまり必要無いんじゃない?



118 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 11:48:18 ]
>>117 え?

119 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 12:21:11 ]
>>118
Cとかと違って,違う型として扱ってくれるからじゃない?
全て上手く行くかどうか分からないけども

120 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 14:57:22 ]
データの目的を変数名に入れなくても、typedefで型のほうを目的固有にできるって話じゃね。

ttp://www.radiumsoftware.com/hungarian_notation.html
この例なんかは、安全な文字列型と危険な文字列型を用意すれば解決するようにも思える。

121 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 17:29:48 ]
>>120のリンク先では「(C++で)いちいちウィンドウ座標とレイアウト座標を
別のクラスにするのは大仰すぎて非現実的だからアプリハンガリアンがいいよね」
と言いたいようだけど,ただ視覚に訴えかけるだけじゃなくて
それぞれを暗黙的に変換されないようにするべきだと思う.

typedefがあるD言語では仕組みは簡単だし
実は同じ型だから変換のコストは安いからもってこい
typedef Point LayoutPoint;
typedef Point WindowPoint;
とか
typedef /*unsafe*/string safeString;
とか.
D言語ではアプリハンガリアンでさえいらず型システムに任せられる気がしてきた

122 名前:117 mailto:sage [2008/04/30(水) 17:31:07 ]
>>118
すまん言葉足らずだった
>>119-120が言っている通り
なるべくならコンパイルエラーで検出できるようにした方が間違いが無いだろうし
オーバーロードが出来るから処理も分けやすい

全てのケースで置き換えられるとは言わないけど
大体はtypedefが使えると思う

123 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 17:40:46 ]
文字コード別に文字列型を定義してしまっても良い気がする。

124 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 18:29:26 ]
>>123 こんなのはしてみたけど
typedef char mbchar;
alias invariant(mbchar)[] mbstring;
文字列同士の連結に ~ じゃなくて連結関数を使わないといけないのがネックだった

125 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 19:42:24 ]
ただの配列だから~演算子で連結できるだろ

126 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 19:44:23 ]
>>124
charは既にUTF8って意味を持ってるから、ubyteを基底にするべきだろうね。

127 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 20:04:38 ]
配列でptrを使わずに&演算子で出てくるのは配列の最初の要素へのポインタと配列の長さを格納した8バイトのデータ?



128 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 20:21:27 ]
>>125
あ,ゼロ終端の配列にするからいけないのか thx
>>126
間違えた.元々 ubyte にしてました

129 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 20:25:35 ]
>>127
&演算子が返すのは、配列の参照が保持されている場所のアドレスか、
配列の先頭の要素のアドレス。動的か静的かで挙動が異なる。

130 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 21:15:10 ]
>>116
すまん、dHell2の方だった
アプリケーションハンガリアンってあるのか・・・
システムハンガリアンしか知らなかった・・・thx!!

131 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 21:59:30 ]
>>114
なるほど

132 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 22:43:31 ]
>>122
なるほど、得心しました。
単純にアプリケーションハンガリアンはレビュアーの為でもあるんでそっちまで否定されてるのかと思い込んでました。

133 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 07:09:09 ]
>>124
文字列型はinvariant(char)[]でもう確定なのかな
せめて一段aliasがあればな…

ていうかWindowsでUTF8が(ry

134 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 10:37:10 ]
ところで、charがUTF-8の文字という意味を持っているなら、
なんで、toMBSzとかはchar*を返すんだ?
ubyte*を返すべきなんじゃないか?

135 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 13:11:56 ]
まったくその通りだと思います

136 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 15:05:51 ]
D はじめますた。
winxp で eclipse + descent + dmd 1.028 + dsss 最新版 + ddbg 最新版で
なんとかコーディング → ビルド → デバッガが走るという、IDE の最低限要素を実現出来たばっかり。

で、
import std.stdio;
void main() {
 printf("test");
 printf("hello, D");  // この行にブレークポイント
}
このコードでブレークポイントの部分で止まったときに
eclipse のコンソールに、標準出力に出力されたであろう test って文字列が出てこない。
出てこさせる方法は無いですか?


137 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 15:22:47 ]
fflush(stdout);



138 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 15:26:06 ]
>>136-137
std.stdio.flushall();
てのなかったっけ

139 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 15:32:06 ]
>137
>138
出てこないみたいです。

140 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 16:49:44 ]
あーーーわかりますた。

標準出力用のコンソールが、eclipse の外のウィンドウで出てたです。
気がつかなかったー。

141 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 17:36:59 ]
ワラタ


142 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 20:25:08 ]
>>136
その実現する過程をぜひ教えてほしい・・・

143 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 22:28:47 ]
eclipse は元から入ってました。

で、descent を入れました。
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

デバッガの設定
www.dsource.org/projects/descent/wiki/DebuggingPrograms


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

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


だいたい、こんなかんじです。

145 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 23:44:39 ]
乙です

146 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 06:26:21 ]
>>143-144
うわ、ありがとう!!

147 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 18:23:04 ]
Descent ver あがってるね。



148 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 19:33:18 ]
型タプルの各型の文字列表現が欲しいんだが可能でしたっけ?

149 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 20:10:02 ]
stringof プロパティを使えば出来るかと
ttp://www.kmonos.net/alang/d/2.0/property.html

動作例 これでいいのかな?
ttp://codepad.org/7jPFcZXj

150 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 21:44:48 ]
>>148じゃないけど…おれもちょっとそれは悩んでたことがある。結局あきらめたけど。
>>149
ttp://codepad.org/JLIVZDYF
こんな感じに、モジュール名まで考えたときに stringof だと都合が悪いんだよね…
mangleof と demangle でいけないかと思ったけど、これもなんかうまくいかないし…
どうすればいいんだろう?

151 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:24:11 ]
1.0から0.2を5回引いても0にならないのはどうにかならないんでしょうか・・・。

152 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 23:37:42 ]
面倒でも整数で

153 名前:149 mailto:sage [2008/05/02(金) 23:40:14 ]
>>150
うーん、確かに半端だ…
.NET Framework の Type.Fullname プロパティ相当のものが
現在のD言語には用意されていないようなのが不味いのかな。

154 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 00:19:06 ]
>>151
浮動小数点数がどういうものかを勉強しろ。

155 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 00:33:29 ]
Dの浮動小数点数ってずいぶん貧弱なんですね

156 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 00:37:58 ]
>>148
stringof はタプルに対しても使える。
モジュール名は実行時でも良いなら typeid で取れるね。

157 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:16:37 ]
>>155
Dの・・・?



158 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:24:55 ]
あちこちで春ですよ

159 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:36:59 ]
さすがに>>155には失笑した

160 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:48:20 ]
>>155はとりあえず基本情報処理技術者の資格を取ってきなさい

161 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 01:51:09 ]
>>155
今まで使ってきた言語を示すべし

162 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 02:25:19 ]
PythonのDecimalみたいなのがあれば良いんじゃない

163 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 02:51:49 ]
>>162
Decimalはライブラリ(というかモジュール?)だから組み込みどうしではPythonも同じじゃない?
標準で入れるべき,となるとまた別な問題な気がするけど,dsourceとかにあるのかなぁ

164 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 10:30:41 ]
Dの10進浮動小数点数ライブラリはまだ見たことはないな
まあ、欲しい奴が移植すればいいだろう

165 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 15:22:40 ]
>>155はMatlabとかMathematicaとか使ってたんだろ。

166 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 15:37:18 ]
C#は1.0から128bitDecimal型標準装備だな

167 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 09:46:12 ]
>>143-144に刺激されて、Eclipse&Dscentいれてみたが、
VSのMakeプロジェクト、asm{ int 3;} に慣れすぎていた自分がいた・・・



168 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 01:02:20 ]
仕様で見つけられないので質問です。(1.0 の仕様しか見てませんけど)

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

とりあえず試した限りでは public っぽいのですが・・・。

169 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 01:23:20 ]
www.kmonos.net/alang/d/2.0/struct.html
デフォルト publicだよ

170 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 01:25:48 ]
あ、ごめん2.0のURL出しちゃったけど1.0系でも同じだよ

171 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 01:43:51 ]
・・・これで判れというのもなかなかシビアなものがある。>DigitalMars

どもありがとうございました〜

172 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 08:12:45 ]
>>これで判れ
Dは初心者向けじゃなくて今までの言語との比較が基本だから仕方ない気もしてたり

173 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 00:46:47 ]
poseidonがなんか少し新しくなってる

174 名前:デフォルトの名無しさん mailto:sage [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
比較したいならこっちをどうぞ

175 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 01:38:46 ]
[poseidon diff]
www.dsource.org/projects/poseidon/wiki/WikiStart?action=diff&version=31

[descent diff]
www.dsource.org/projects/descent/wiki/WikiStart?action=diff&version=65

176 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 04:51:01 ]
>>149
ありがとうございました。
おかげさまで>106もどきができたのですが、
長いのでここに貼るのはどうかなという感じのものです。
codepadはたぶんコンパイラのバージョンの違いで通りませんでした。

177 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 20:37:53 ]
dflのListViewってハンドル取れないようになってないかい?



178 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 09:39:00 ]
ハンドルって何のこと

179 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 12:09:55 ]
キャンドル♪ハンドル♪ペダルにサドルに自♪転♪車♪漕いどる♪

180 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 17:44:31 ]
Windows的にいえば、Windowハンドルじゃないかい?

しかし、懐かしいもんひっぱってきたねぇ。>>自転車
意味的にはハンドルはどっちも同じだったと思うけど。

181 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 18:50:38 ]
デバイスコンテキストハンドル

182 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 19:10:34 ]
久しぶりにdflのサイト覗いてみたけど、3月中旬にD2対応してたんだね。
そろそろD2に移行しようかな
ttp://wiki.dprogramming.com/Dfl/Snapshots

183 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 21:04:49 ]
>>182
あれ?どうやったらD2で使えるんですか?

184 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 21:26:32 ]
ttp://wiki.dprogramming.com/Dfl/D2-0
まだ対応してないとも書いてるけど

185 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 22:01:43 ]
うちの環境がおかしいだけでできるみたいです

186 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 22:32:15 ]
インストールして普通に動いたよ@v2.013

>>184
スナップショットのほうで対応してるってことかと。

187 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 23:09:11 ]
なんでpathが通ってないのにdfl.exeは
c:\d2\dmd\bin\dmd.exeじゃなくて
c:\d\dmd\bin\dmd.exeの方を使おうとしてくれるのだろうか orz
c:\d を c:\_d に改名したら普通に動くのに・・・
どこかに設定が残っているのでしょう?



188 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 23:15:56 ]
多分わかった
両方のバージョンを入れていて競合する人はdfl.exeを使う前に
dfl -i
を実行してやればいいみたいだ

189 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 00:29:43 ]
>>179
会いに来て荒♪井♪注♪

190 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 07:28:43 ]
DFLでつかえるコントロール一覧のスクリーンショットってなかったっけ

191 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 16:24:34 ]
ttp://www.dprogramming.com/dflscreenshots.php

192 名前:デフォルトの名無しさん [2008/05/09(金) 22:01:09 ]
dmd1.029
class Test
{
int[string] x;
void a(Test* t){assert("hello" in t.x);}
Test* b(){return &this;}
}

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

ナゼ?

193 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 00:48:28 ]
Test#b はローカル変数のアドレスを返してるようなもんだと思うんだけど

194 名前:192 [2008/05/10(土) 01:38:42 ]
>>193
確かにTest#bを
Test* b()
{
static Test c;
c = this;
return &c;
}
にすると解決
ただ、なんとなくいまいち泣希ガス
意図としては関数bには&tを返してほしいんだが、そういうのはワガママ?

195 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 01:49:12 ]
そんなの無理だろ。
オブジェクトを値渡ししてるのに

196 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 01:54:47 ]
もともと参照だしそれって意味あるの?

197 名前:192 [2008/05/10(土) 02:18:39 ]
ああ、そういえばそうか。
根本的なことわすれてるなおれ。

別方法で打開しました。おさわがせ。



198 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 02:55:09 ]
class Test
{
int[string] x;
void a(Test t){assert("hello" in t.x);}
Test b(){return this;}
}

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

これじゃ駄目だったの?

199 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 03:51:49 ]
C++使ってたから俺も混乱した

200 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 19:35:18 ]
Dも、C#みたいに型省略宣言入れてくれよ。

201 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 19:36:25 ]
autoで我慢しなせぇ。

202 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:11:02 ]
>>200 どんなの?

203 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:19:29 ]
匿名型のことかな

204 名前:202 mailto:sage [2008/05/10(土) 22:45:05 ]
これか?
void main(){
    auto x = new class {int a; string b;};
    x.a = 1;
    x.b = "hoge";
}


205 名前:デフォルトの名無しさん mailto:sage [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が同じ型にならないのがだめだな。

206 名前:202 mailto:sage [2008/05/10(土) 22:59:05 ]
まあそういう仕様だわなあ
同じ型がいい理由ってどんなんがあるの?

207 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:00:45 ]
ん・・・あれ?
行頭のスペースが残ってる
for(;;){
    writefln();
}



208 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:05:14 ]
>>206
配列に突っ込みたいときとか

209 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:31:08 ]
てs

210 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 05:34:08 ]
  だろ?

211 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 08:00:40 ]
うーんLINQみたいな応用があれば
匿名型は有意義なんだろうけど今のままならあんまりかなあ
匿名型のTupleを可変長テンプレートの引数に与えるとかで代用できないのか

212 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 11:00:31 ]
>>191
ありがとう〜

213 名前:デフォルトの名無しさん mailto:sage [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;
}

214 名前:213 mailto:sage [2008/05/12(月) 20:41:00 ]
auto p= has( as, key)
p.MEMBER= VALUE;
って感じです。
こうやったほうがいいぜ、とかご意見ありましたらm(_ _)m

215 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:42:16 ]
V* has(K, V)( ref V[k] as, K key)

とかじゃあかんの。

216 名前:213 mailto:sage [2008/05/12(月) 23:46:32 ]
がーーーーん

217 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:54:09 ]
配列は参照型だからrefである必要もないな。



218 名前:213 mailto:sage [2008/05/13(火) 08:30:21 ]
>>215,217
さらしてみるもんですね・・
ありがとうございます

219 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 20:33:38 ]
DBIに
private import tango.stdc.stringz : toDString = fromUtf8z, toCString = toUtf8z;
というコードがあるんですが、
これってどう修正すれば動くんでしょう?

220 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 20:56:43 ]
こうかな?
private import tango.stdc.stringz : toDString = fromStringz, toCString = toStringz;

参考:
dsource.org/projects/tango/docs/current/tango.stdc.stringz.html
www.kmonos.net/alang/d/2.0/module.html

221 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:30:45 ]
>>220
ありがとうございます。

222 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:42:04 ]
dでSqliteを使おうと思っています。
www.digitalmars.com/download/freecompiler.html
でImplibを使ってLibファイルを作り、
pragma (lib, "sqlite3.lib");
extern (C):
int sqlite3_open (char* filename, sqlite3** database);
int sqlite3_close(sqlite3* database);
として関数を使ってみたんですが、Undefined Symbolと出てしまいます。

何か足りないものか間違ってる所があるんでしょうか?

223 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 22:17:29 ]
sqlite3

224 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:06:23 ]
小文字を大文字にするテンプレートを書いてみたんだけど

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

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

コンパイル時に末尾最適化がかかるとは思ってないけども、
文字列が長くなったときに影響あるかな…と思いまして。

225 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:09:58 ]
>>224
関数にすれば良くね?

226 名前:デフォルトの名無しさん mailto:sage [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);
}


227 名前:224 mailto:sage [2008/05/13(火) 23:48:25 ]
>>224 >>225
コンパイル時に実行できる関数がうまく作れなかったのでテンプレートにしたんだけど
関数で書けるのなら関数のほうがいいですね。参考になりました。ありがとう。



228 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:20:18 ]
>222
ポエニーのソースを見ると良いよ。sqlite3 をつかってたはず

229 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 04:01:35 ]
>>228
ありがとうございす。
ソースの中にあった、dllとLibファイルを入れ替えたら動きました・・・。
Libファイルの作り方が悪かったようです。

230 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 07:12:25 ]
ひさしぶりにDさわったら、ずいぶんましになってんのな
前はコンパイラがすっこんすっこん落ちてた

231 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 10:11:13 ]
void foo() {
void bar(...) {
}
}

これをdmd_2.012-030708_i386.debでコンパイルするとSegmentation faultが出る

232 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:22:02 ]
可変引数(?)の...をその関数内の...を受ける関数に渡す場合ってどうすればいいんでしょうか?

233 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 16:00:42 ]
タプルでいいならこれでおkかな?
void foo(T...)(T a){
void bar(U...)(U b){writefln(b);}
bar(a);
}

234 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 19:58:22 ]
>>232
Cスタイルならva_listをとる関数を別途用意するしかない。
Dスタイルなら配列で受けて配列のまま渡せばいい。
可変長引数タプルなら>>233。これが汎用性は一番高い。

235 名前:デフォルトの名無しさん [2008/05/14(水) 23:04:12 ]
dmd1.029+
dsource.orgのWindowsAPI bindings+
わなDさんから頂いたcoffimplibでPlatformSDKから作ったlib

でWM_IME_CHARがこないんだ、がみんなどうよ?


236 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 13:13:07 ]
Error: no property 'hogefunc' for type 'hoge.Hoge'
これはどういう意味なんでしょう。
関数は定義されてるはずなんですが。

237 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 13:14:28 ]
思いっきり勘違いでした。
定義されてない関数でした。



238 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 16:21:34 ]
>>235 それをパッと実験できる準備ができてる人はあんまりいないと思う

239 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 01:32:39 ]
文字列の連想配列って
char[char[]][]
じゃエラーになるんですが、どういう風に宣言すればいいんでしょう?

240 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 01:42:54 ]
string[string]

241 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 03:03:20 ]
char[][char[]]

242 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 16:07:18 ]
>>239
それじゃ文字の連想配列の配列じゃね

243 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:47:04 ]
dでリフレクションな事ってできませんかね。
アクション呼ぶのにSwtich文つらつら書いてるのがあれなんですが。

244 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:43:46 ]
1.reflection.dを使う
2.BOFの発表であったいずれ来るかもしれないライブラリを待つ
3.自分で作る
のどれかかな

245 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 06:44:20 ]
>>241
>>242
動きました。
ありがとうございました。

246 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 11:56:07 ]
と思ったら動いてませんでした。
["hoge":"omg","test":"sod"];
こういう配列を受け入れる変数はどういう宣言が必要なんでしょうか。

247 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 11:59:31 ]
string[string] aa = ["hoge"[]:"omg"[],"test":"sod"];



248 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:23:02 ]
あぁ、すごい勘違いですた。
~=じゃなくてそのまま=で入れられるんですた。

249 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:19:03 ]
Version D 2.014 May 16, 2008
New/Changed Features
Added -man switch to browse manual.
Added -lib switch to generate library files. Also causes multiple object files to be generated from one source module.
When generating an executable file, only one object file is now generated containing all the modules that were compiled, rather than one object file per module.
Rewrote the rdmd utility to properly track dependencies and command-line compiler options (currently only working under Linux).
Changed the Phobos makefile linux.mak to take advantage of the new -lib feature. Improved full build speed by 3x.
std.algorithm: Changed the map() function so that it deduces the return type. Also map can be now curried.
std.contracts: Added file and line information to enforce. Added errnoEnforce that formats the error message according to errno. Added corresponding ErrnoException class.
std.conv: Made std.to curryable. Changed std.to to throw exception when object-to-object cast fails. Eliminated some superfluous printfs.

250 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:19:48 ]
std.encoding: Added new functions encodedLength(dchar) and encode(dchar, ref E[])
std.encoding: Got rid of types Utf8, Utf16, Utf32, Ascii, Latin1, Windows1252. Introduced types AsciiChar, AsciiString, Latin1Char, Latin1String, Windows1252Char, Windows1252String.
std.encoding: For now commented out std.encoding.to.
std.file: Changed Boolean function signatures (e.g. exists) to return bool instead of int. Got rid of some gotos. Added the readText, lastModified, mkdirRecurse, and rmdirRecurse functions.
std.functional: Improved compose so it accepts an unbounded number of functions. Added the pipe function.
std.getopt: Added new option stopOnFirstNonOption. Also automatically expand dubious option groups with embedded spaces in them (useful for shebang scripts)
std.math: improved integral powers
std.md5: Improved signature of sum so it takes multiple arrays. Added getDigestString.


251 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:20:09 ]
std.path: changed signatures of test functions from bool to int. Implemented rel2abs for Windows. Improved join so that it accepts multiple paths. Got rid of some gotos with the help of scope statements.
std.process: added getenv and setenv. Improved system() so it returns the exit code correctly on Linux.
std.random: added the dice function - a handy (possibly biased) dice.
std.typecons: Finalized and documented the stupendous Rebindable template.
std.utf: added the codeLength function. Got rid of some gotos.
Bugs Fixed
std.format: Fixed unlisted bug in raw write for arrays
std.getopt: Fixed unlisted bug in dealing with one-letter options with bundling disabled


252 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:22:26 ]
Bugs Fixed
std.format: Fixed unlisted bug in raw write for arrays
std.getopt: Fixed unlisted bug in dealing with one-letter options with bundling disabled
Bugzilla 2014: fopen fails on large files.
Bugzilla 2031: Documentation: template value parameters
Bugzilla 2032: Documentation for creating a class on the stack is unintuitive
Bugzilla 2037: Article on hijacking is outdated
Bugzilla 2038: Remove hello2.html from samples directory
Bugzilla 2039: -ignore switch is missing from compiler docs
Bugzilla 2054: Const system broken on struct assignment.
Bugzilla 2055: (ICE) Compiler crash on struct initializer with too many elements
Bugzilla 2056: Const system does not allow certain safe casts/conversions involving deep composite types
Bugzilla 2058: Describe hidden value passed to class member functions
Bugzilla 2063: std.xml access violation for nested, closed tags
Bugzilla 2065: Return value of std.file.exists() is inverted.

253 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:23:12 ]
Bugzilla 2067: call from anonymous class makes access violation.
Bugzilla 2071: spec doesn't mention pointer arithmetic with two pointer operands
Bugzilla 2072: std.typecons documentation anomaly.
Bugzilla 2074: Variant arithmetic operations fail. For now the fix is to comment out all right-hand side operators. Suggestions for a better fix are welcome.
Bugzilla 2075: Spec does not specify how array literals are stored.
Bugzilla 2084: operator ?: does not compute the tightest type
Bugzilla 2086: Describe relationship between string and char[] more explicitly
Bugzilla 2089: Issues with CTFE and tuple indexes
Bugzilla 2090: Cannot alias a tuple member which is a template instance
Bugzilla 2100: Assertion failure: '0' on line 4842 in file 'expression.c'
Bugzilla 2109: asm {lea EAX, [0*0+EAX]; } rejected.

-EOF-

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

といったところか

255 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 18:27:42 ]
関数ごとに.objを分けるみたいな機能で、リンク速度が向上して、サイズは小さくなるのかな。

256 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:22:30 ]
最近、64bitのLinux環境でD言語を使い始めたんですけど、
gdcって、もう開発停止してるんですか?
メンテもされてないコンパイラを使うのは少し気が引けます。

257 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:27:20 ]
ペース遅いけど今も開発されてるよ。



258 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:29:12 ]
開発は停止してないようだがリリース間隔はお世辞にも早いとはいえない

259 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:34:46 ]
早くコミット権限を貰いに行って最新版DMDに対応させる作業にかかるんだ!

260 名前:256 mailto:sage [2008/05/17(土) 23:45:48 ]
>>257,258
レスありがとうございます。
sourceforge見てもわからなかったので、困ってました。
とりあえずgdcを使っていこうと思います。

261 名前:デフォルトの名無しさん [2008/05/17(土) 23:47:03 ]
win32版dmd1.028で連想配列の動的配列のlengthを設定しようとすると
固まるんだけど、誰か分かりませんか?

こんなの

int main() {
 int[int][] a;
 a.length = 5;
 return 0;
}

262 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 00:25:43 ]
>>261
ほんとだ。これでも固まる(実行時)。

void main()
{
typedef int[int] intint;
intint[] a = new intint[5];
}

263 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 00:47:15 ]
シャアw

264 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 04:04:55 ]
>>261
それはずっと前からバージョン関係なく止まる。
効率良くはないが、俺はループさせてnullで埋めたりしてた。

265 名前:デフォルトの名無しさん mailto:sage [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

266 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 16:45:27 ]
std.bindいじってたらdmd落ちた・・・
どこが原因かわかんね

267 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 17:30:22 ]
2.014 std.xmlがうまくうごかなくなった・・
onStartTag内で、attrがからっぽ



268 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 03:50:56 ]
質問なんですが、一度設定したらそれ以降不変なメンバの初期化をコンストラクタに
与えられた値を使って行いたいです。D言語だとinvariantなメンバの初期化はどうやって
行うのでしょうか。

269 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 04:56:06 ]
以下のようにコンストラクタ内で初期化すればいいんじゃないの?

class Foo
{
invariant int bar_;

this(int bar)
{
bar_ = bar;
}

void bar(int baz)
{
//bar_ = baz; コメント外すとError: can only initialize const member bar_ inside constructor
}
}

270 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 08:19:55 ]
DはC++と違ってメンバ初期化子ないもんね

271 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 08:25:55 ]
参照型のクラスにはいらないし
値型の構造体にはコンストラクタが定義できない
無駄なインスタンスが作られないからメンバ初期化子はいらないわけか

272 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 08:56:39 ]
誰かstd.encodingについて3行でまとめてくれ

273 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 09:12:33 ]
切り捨てなきゃ無理

274 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 14:09:25 ]
文字列エンコーディングに関する標準が出来た感じ?
encodingのドキュメントぱっと見たけど、シグニチャがGeneric過ぎて使い方がすぐイメージできんw
あとEncodingSchemeASCIIとかのクラス名はASCIIEncodingSchemeのほうが良くないか。
語順がなんか気持ち悪い。

ともあれ、これにEncodingStreamと、ICUEncodingSchemeとかを加えてやれば、
Javaや.NET並のエンコーディング処理能力が得られるのかな。

275 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 17:28:28 ]
>Javaや.NET並のエンコーディング処理能力が得られるのかな。
それはいいな

276 名前:デフォルトの名無しさん [2008/05/20(火) 03:00:00 ]
int hoge();
void hoge(int v);
で、hoge っていうプロパティになるらしいけど、
hoge++;
って出来ないのは何とかならないですか?
DMD 1.028 です。

277 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 03:14:21 ]
なんともなりまへん。



278 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 06:16:40 ]
ニュースグループで、ウォルたんにお願いしてみるしか。
気が向いたら、やってくれるかも。


279 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 07:34:51 ]
+=もだめだっけ。結構前から「いつかやる予定」ってどっかに書いてなかった?

280 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 16:09:15 ]
「いつかやる予定」=「めどいからやらない」

281 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 17:00:58 ]
時の流れが、少ないコードで何も崩さずそれを追加できるよう状況を整理するのを待ってるわけか。

いや、「いつの間にか必要無くなってる」というのを待ってるのかもw

282 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 17:52:35 ]
コンパイラのソースが公開されてるんだから
自分たちでやるっつーのは?

283 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 18:03:47 ]
言語として互換性を損なうと、それこそ意味がない。

284 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 19:13:40 ]
>>280
今やらねばいつできる -> 今やらねばいつかできる
俺がやらねば誰がやる -> 俺がやらねば誰かやる


285 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 19:27:13 ]
という

286 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 09:46:31 ]
win32.windowsとかdflとか2.0対応のライブラリが
増えてきていい感じに使えるようになってきたね

287 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 13:59:29 ]
あとはTango?
統合されないのかなぁ・・・
ひろいとはいえないDの世界で基本ライブラリが
2つ開発されているのはなんとももったいない



288 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 14:47:57 ]
walたんがそのうち統合されるんじゃねwww
みたいなこと言ってなかったっけか

289 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:25:44 ]
BOFの時の質問にそんなんがあったな。
やっぱり「そのうち統合されるんじゃない?」みたいな感じだった気が。
今のところ統合する気はないってことだよね。

290 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:00:18 ]
タンゴボスは駄目なのかい

291 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:05:11 ]
名前からしてダメダメオーラが

292 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:06:38 ]
ウォルたんのギャグセンスは微妙w

293 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 12:32:39 ]
しかし0.1ショックは面白かった

294 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:03:12 ]
Tangoも…

295 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:45:02 ]
import std.variant;
import std.stdio;
import std.string;
alias Variant var;

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

あれ〜これってだめなのかな
writelnで即落ちします・・・

296 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:47:22 ]
VariantのopEqualsの実装がどうなってるのか確認したほうがよさげ。

297 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:43:03 ]
機能から複数のファイルに分けられたユーティリティ関数を
同じ名前空間みたいな感じでアクセス( Util.hoge() って感じに)したくて、
今はそれぞれのファイルにおいて関数をテンプレートで書いて、
ひとつのファイルでそれらをミックスインしてるんだけど、他に良い方法
ないですか?



298 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:48:34 ]
ファイルを結合する

299 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:17:12 ]
>>295
writeln(dic[var("aaaa")])は,本当に割り当てたキーを参照してる?

dic[var("aaaa")] = 10;
dic[var("aaaa")] = 20;
writefln(dic); //-> [aaaa:10,aaaa:20]

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

ピンと来たんだけど調べるのに時間かかってしまった・・・。


301 名前:297 mailto:sage [2008/05/24(土) 02:02:50 ]
正確には
mixin(import("hoge.d"));
でコンパイルオプション -Jhoge ってな感じですね。
うまくいきました。感謝です。

趣味でゲーム作るならやっぱりD言語ですねぇ

302 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 07:25:47 ]
>>299
わ、本当だ!
ありがとうございます。

if( var("aaaa") in dic ) {
 writeln( "has" ); //表示されない
}

303 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 09:24:28 ]
listviewにアイコン載せれるようになったらおいらはいつでも戻ってくる

304 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 11:33:38 ]
>>302
Dのリテラル文字列ってinternされないって事なのかな?

305 名前:デフォルトの名無しさん [2008/05/25(日) 12:37:31 ]
ttp://wiki.dprogramming.com/Dfl/Snapshots

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

ttp://www.dprogramming.com/listviewimages.gif

306 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 13:00:14 ]
>>305>>303

307 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:00:09 ]
>>304
toHashは同じ値になるから,結局はopCmpやopEqualsの実装によるのではなかろうか



308 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 16:32:51 ]
>>307
var("aaa") == var("aaa") ってなりますね。
opCmpかな〜

309 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 19:48:25 ]
Dで大規模アプリの開発に取り掛かったんだけど言語の選択ミスしてる?

310 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 19:54:02 ]
大規模アプリってなんぞ

311 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 20:24:55 ]
>309
ムチャシヤガッテとは言っておく。

312 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 20:33:41 ]
>>309
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::。:::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::。::::::...... ...   --─-  :::::::::::::::::::: ..::::: . ..::::::::
:::::::::::::::::...... ....:::::::゜::::::::::..   (___ )(___ ) ::::。::::::::::::::::: ゜.::::::::::::
:. .:::::。:::........ . .::::::::::::::::: _ i/ = =ヽi :::::::::::::。::::::::::: . . . ..::::
:::: :::::::::.....:☆彡::::   //[||    」  ||]  ::::::::::゜:::::::::: ...:: :::::
 :::::::::::::::::: . . . ..: :::: / ヘ | |  ____,ヽ | | :::::::::::.... .... .. .::::::::::::::
::::::...゜ . .:::::::::  /ヽ ノ    ヽ__/  ....... . .::::::::::::........ ..::::
:.... .... .. .     く  /     三三三∠⌒>:.... .... .. .:.... .... ..
:.... .... ..:.... .... ..... .... .. .:.... .... .. ..... .... .. ..... ............. .. . ........ ......
:.... . ∧∧   ∧∧  ∧∧   ∧∧ .... .... .. .:.... .... ..... .... .. .
... ..:(   )ゝ (   )ゝ(   )ゝ(   )ゝ無茶しやがって… ..........
....  i⌒ /   i⌒ /  i⌒ /   i⌒ / .. ..... ................... .. . ...
..   三  |   三  |   三  |   三 |  ... ............. ........... . .....
...  ∪ ∪   ∪ ∪   ∪ ∪  ∪ ∪ ............. ............. .. ........ ...
  三三  三三  三三   三三
 三三  三三  三三   三三

313 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:08:24 ]
>>309
それはあくまで「趣味の範囲」での大規模ですね、わかります

314 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:10:17 ]
>>313
GUIです。

315 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:22:10 ]
GUI使ってれば大規模?


316 名前:デフォルトの名無しさん [2008/05/26(月) 23:20:17 ]
ひょっとすると、GUIフレームワークを開発中なのでは?

317 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:54:12 ]
>>316・・・それはないだろう
>>314普通のGUIアプリならDでもいいけど
Dの利点は優れた構造化能力と何よりフロンティアであることです
実務を楽にこなしたいならC#の方がいいよ



318 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 10:37:03 ]
>>309
答えるのが難しい質問だね。
言語仕様自体は、コード解釈で微妙な誤解が起きたりしないよう
注意が払われてるなど、大規模開発を意識したものになってる。
しかし現状では、処理系やライブラリの熟成度に不安がある。


319 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 12:08:48 ]
------ test.d ------
class T1 {
  public int getint() { return 1; }
}

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

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

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


dmd.2.014で上のように書くとスタックオーバーフローになるのですが
dmd.2.014と私のどちらがおかしいのでしょうか?
私がおかしい場合、どのように書くのが正解なのでしょうか?

320 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:11:58 ]
public override int getint()
{
  return super.getint;
}
これじゃ駄目な理由は何?

321 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 16:06:32 ]
>>320
いえ、それで結構です。super.で呼べるのですね。
それを知らなくて return super(); とかいろいろやってました。
ありがとうございました。

322 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 16:39:58 ]
TinyXMLはObjectのメンバを再定義してる部分が多くて
全部hiddenなんとかのエラーが出てしまう
alias Object.print print;
public void print() {}
て全部やらないのいけないよね?
めんどいけどしょうがないのかな

323 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:51:13 ]
D言語とC++0xって闘ったらどっちが強いんですか!?

324 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:57:58 ]
純粋な疑問なんだけどプログラム言語の世界で「○○言語最強」とか言ってる連中って何がしたいの?
「強さ」の基準からしてまったくわからんのだけど。

325 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:05:12 ]
作者と信者がガチの喧嘩をしたらどっちが勝つかという問題だろう。
Dは少数派だから厳しいだろうな。

326 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:13:40 ]
D教祖の筋肉とチーマObjective-C信者の飛び道具がマジノ攻防戦?

327 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:24:34 ]
でもDは大砲も跳ね返すんだぜ?
www.kmonos.net/alang/d/2.0/dbc.html



328 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:51:58 ]
すげぇwwwwwwwwwwwwwwwwwww
D言語使わせてくれwwwwwwwwwwwwwwwwww

329 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 23:02:19 ]
D事態が弾を内包しているという罠・・・

330 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 00:16:40 ]
その弾丸と親和性が高いのではねかえせるのですね。わかります。

331 名前:デフォルトの名無しさん [2008/05/28(水) 00:39:32 ]
DでBasicっぽいゲームエンジン作ろうかと思ってるのだがやめておいたほうがいいだろうか・・・

332 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 00:45:54 ]
D言語で最新のDirectX SDKを叩ける方法の方が…

333 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 02:15:29 ]
>>331
いや、やってみてから挫折しろよ

334 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 05:49:30 ]
>>332
最新に完全対応かどうかはわからないけど
DSourceにあるBindingsで叩ける
最新SDKとリンクさせてるけど、いまのところ問題ない。

335 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 06:27:21 ]
>>324
何がしたいっていうか、そういう遊びだろう。
勝敗の決まらない、操作そのものを楽しみ続ける格闘ゲームみたいなものだから、
基準がまったく定まらず、お互いにまったく噛み合わないこと自体も
彼らの求める相互排他とか衝突を生み出すいいきっかけなんだよ。

336 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 07:27:03 ]
>>327
なんでD言語のキャラクターはこんなにムカつくんだwww

337 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 08:51:39 ]
>>334
まじ?Bindingsってなんか依存関係でコンパイラがエラーはくんじゃなかった?



338 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 11:11:11 ]
ロゴがある言語って少ないんだからあのロゴキャラ消してもいいような…

339 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 11:20:34 ]
日本以外はサマータイムやってるから理論はいかがなものかと。
ウザカワキャラってことで売り出していこうぜ,

340 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 11:41:16 ]
>>337 そんなのとっくに直ってる

341 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 13:57:47 ]
GDI+ の D言語へのポートってないんですか?
自分でシコシコ作るしかないのかな…

342 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 14:33:41 ]
大規模やらDirectX10やら、やたら勇者がおおいな

343 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 15:44:21 ]
そう言えば日本のサマータイム導入はどうなるんだろう。
他の導入済み都市と比べて夏と冬の日照時間にほとんど差がないから意味がないような。
また政治家の手続き遊びによる金稼ぎが。

344 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 20:29:27 ]
毎年、切り替えの日に仕事遅刻するのが目に見えてるからやめてほしい。

345 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 15:41:17 ]
なんの話だよ

346 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 15:58:53 ]
サマータイムの話では。

347 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 21:01:28 ]
DigitalMars のサイトが……



348 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 21:29:54 ]
と思ったら蘇ってた

349 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 21:49:18 ]
一瞬だけ変なところ飛んだんだが、何事だったんだろうな

350 名前:デフォルトの名無しさん [2008/05/30(金) 01:11:16 ]
glutを使いたいのですが、リンク時に
Error 42: Symbol Undefined _glutInit
というエラーが出てしまいます
調べてみたところ、おそらくglut32.libが原因のようで、
glut32.libは DIDE with D のものを使うといいとの事ですが、
DIDE with Dのサイトがもう見れなくなっていて困っています。
DIDE with D以外だとどこのglut32.libを使えば動くんでしょうか?
ちなみにimplib -a glut32.lib glut32.dl で作ったものと
yaneSDKに入っているもの、DedicateDのglut32.libを試しても同じエラーが出てしまいました。

それともなにか他の原因があるのでしょうか?
原因がわかりそうな方お願いします。

351 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 01:15:26 ]
>>350
.zipで上げてくれたら誰かやってくれるかもしれんよ

352 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 02:15:14 ]
SDL + opengl opengluなら普通に使えるけどglutは試してないなぁ。

353 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 02:33:11 ]
>>350
DLLがあるなら、implib /s glut32.lib glut32.dllでいいと思うのだが

354 名前:353 mailto:sage [2008/05/30(金) 03:51:53 ]
よく調べたら、extern(Windows)な関数のライブラリだった。
↑は使えない。
まずwww.xmission.com/~nate/glut.htmlからvc++用のバイナリを落としてくる。
それから、glut32.libをcoffimplib.exeでOMFライブラリに変換して、
それを使えば大丈夫なはず。

355 名前:353 mailto:sage [2008/05/30(金) 04:06:26 ]
あと、glutInitの宣言にextern(Windows)がついてないと思われるので、付けるように。

というか、むしろこっちが原因かも。
libファイルがどうこうじゃなくて。
yaneSDKに入っているものでも大丈夫だったし。


356 名前:353 mailto:sage [2008/05/30(金) 04:23:03 ]
>あと、glutInitの宣言にextern(Windows)がついてないと思われるので、付けるように。
extern(C)をextern(Windows)に変えろって意味ね。


357 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 04:37:31 ]
世話焼き萌え。



358 名前:350 mailto:sage [2008/05/30(金) 11:55:05 ]
>>355
extern(Windows)をつけたらできました。
レスくれた方ありがとうございます。
勉強になりました

359 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 12:50:34 ]
GLでがりがりやってる方もいるんだねぇ・・・

360 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:29:20 ]
さて、IDEはまだかね?

361 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:44:58 ]
っ Descent

362 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 23:05:09 ]
つ Entice Designer

363 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 23:07:13 ]
っ SASI


364 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 02:32:17 ]
っ Poseidon

365 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 06:30:29 ]
JDT並みの自動補完がほすい

366 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:12:34 ]
つ Descent
・・・より優れているのか?

367 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 08:40:13 ]
Descent はすぐに自動補完がぬるぽで落ちて、自動補完聞かないただのエディタと化してしまうからいまいち。
他はしらん。



368 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 11:37:16 ]
そんな現象なったことないな

369 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 13:03:41 ]
昔のVisualStudioはよくそんなことなってたよなw
Descentでなったことはないわ。

370 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 03:28:47 ]
DescentでMake使えるようにならんかなぁ

371 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 03:34:26 ]
と思ったらEclipseのBuilderから普通に使えた

372 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:37:39 ]
mixin(import("con"));

これ通らないのかよー

373 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:42:58 ]
>>372
-J.

374 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:12:58 ]
それしてもコンパイルは通ったように見えるけど、実際は何も生成されない。

375 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:14:13 ]
何も生成されない、というか空文字列として扱われてるみたい。

376 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 08:25:02 ]
>-J.
これがなんかの絵文字かなやんだおれは
修行がたりない

377 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 15:40:40 ]
>:-J.



378 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 20:39:49 ]
|| -J. |
- ノ

379 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 21:33:30 ]
||||
-J
o/

380 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 08:02:35 ]
やってることが暇人すぎてわろた

381 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:40:20 ]
何か建設的な話題はないのか

382 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:03:30 ]
2010年にD++が出る

383 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:17:42 ]
D#とDavaとDoberonも出るよ

384 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:42:15 ]
DaskellとかDCamlとかDispに期待。

385 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:51:46 ]
DOBOLだな

386 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:53:36 ]
最近はバグ取れてきた?
そろそろ本格的に使ってみようかと思うんだが(趣味でだけど)
JavaとRubyに慣れた身にはC++は苦痛・・・・・・代替言語が欲しい

387 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 03:58:32 ]
javaに慣れてるならライブラリが薄いこと以外はスーパーセット的に使えるだろ
rubyみたくクラスに機能をインジェクションしようと考えてテンプレートをいじる遊びもできるし



388 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 11:02:13 ]
>>386
バグは普通に使う分にはすでにあまり問題ないレベルであるように感じる。
趣味で追いかける分にはD言語は愉快な言語だと思う。

389 名前:デフォルトの名無しさん mailto:sage [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);
}

こんな感じでテンプレートの引数として使われてるテンプレート引数って推論できないものかなあ。

390 名前:386 mailto:sage [2008/06/07(土) 15:23:42 ]
>>387-388
ありがと。何よりもまず使ってみる

391 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:44:05 ]
質問。

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

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

って、どう展開されるんですか?

392 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:47:00 ]
argはコンパイル時定数じゃないからテンプレートに渡すことはできない。

393 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 17:21:15 ]
でもコンパイルとおっちゃうんですよねー・・・。

不定値になるのかな?

394 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 17:28:14 ]
バグでしょ。

395 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 07:59:20 ]
CTFEが働いているとかはないのか

396 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 10:29:42 ]
>>391
何故か0が渡されてる
codepad.org/qbKJaxYV

397 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 12:24:22 ]
typedefで初期値を変えても0が渡されてるからint.initですら無いようだねぇ。



398 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:35:15 ]
>>395
CTFEにしても、関数はランタイムでも実行できないとだめだから、
コンパイルが通るのがおかしい。

399 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 18:03:26 ]
既出のバグなのかな?
あの大量のリストを全部確認するのはつらいよなあ…
1000近くあるし英語だし…
というかこれも結構重複とかしてるんだろうなぁ…

400 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:06:25 ]
連想配列をイテレートする便利クラスってなかったっけ?

キーの大きい順にとか、値の小さい順にとかやりたいんだけども。

401 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:03:47 ]
しっかりしたライブラリなら、
  dsss build --doc
でドキュメントが生成できるのな。知らなかったぜ。
dsss net install は未だに成功した試しがないんだがw

402 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 08:04:55 ]
dmdとcandydocで作るのと一緒のやつだっけ?
そういえばdmd -doc使ってないなあ
プロファイラとコードカバレッジとユニットテストが
dmdでできるのは重宝しているが

403 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 10:45:14 ]
>>400
foreach (v; aa.keys.sort) {...} とかじゃ不足?


404 名前:403 mailto:sage [2008/06/09(月) 10:48:26 ]
微妙に間違えた。
キーで回すんだから foreach (k; aa.keys.sort) と書かなきゃ。


405 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:45:00 ]
値でソートしたり、値が一致したときにキーにフォールバックしたりしたいの。

406 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:03:57 ]
>>404
まだ微妙じゃないのか?
foreach (v, k; aa.keys.sort) じゃね?

>>405
>フォールバック
ちくしょう、おいらにゃ意味がわかんねぇ

407 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:01:16 ]
>>406
書くならこうだろう。
foreach (i, k; aa.keys.sort)



408 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:19:56 ]
今無性にimport文でワイルドカード使いたい。Javaみたいに。ニュースグループではそんな無駄な
機能いらねぇよ派が多数だったみたいだけどな。Tango のライブラリとか細かすぎていちいち
書くの面倒になっちゃうよ。DFL みたいに all.d みたいなファイルを用意しておけば、まぁ
似たようなことはできそうなんだけど。

409 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:45:53 ]
Tangoにもまとめてimportする用のモジュールあるじゃん。

410 名前:408 mailto:sage [2008/06/10(火) 03:40:56 ]
…あ。tango.group なんてあるのね。>>409 のお陰で得した気分だ、ありがとう

411 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 04:09:13 ]
処理速度ってC++より早いのか?

412 名前:デフォルトの名無しさん [2008/06/11(水) 08:37:58 ]
また馬鹿げた質問を
単純ループのベンチマークでもとって比べるか?w

413 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 08:49:25 ]
処理速度気にするなら単純なコードでコンパイルして逆汗して比較汁
コンパイラの出来も同時に判る
組み込みやってた知り合いはそれやってたらできたてのコンパイラのバグみつけた


414 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:00:11 ]
string s = Format!("Arg %s = %s", "foo", 27);
を実行しようとすると、
cannot implicitly convert expression ("Arg %s = %sfoo27") of type const(char[]) to invariant(char)[]
て怒られた。

なんでstringで受けられないの? ってことと、あと文字列が連結されてるだけで置換されてない……。
公式のサンプル通りなんだけど、ドキュメント古くなってる? 俺がなんか変なことしてるのかな。

415 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:33:38 ]
metastringsのソース見れば分かるけど返ってくるのはconst char[]なので,
stringでは受けられないんじゃないかなぁ(実際はconst(const(char[]))かな).
使うときはいつもautoなので気にしてなかった.

それと,Formatの中ではchar[]で分岐してるので,
ここをconst char[]に修正しないとまともにフォーマットされない.

416 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:46:29 ]
Formatはconst/invariant導入されてから壊れっぱなしだな。
めったに使わないから不自由はしてないけど

417 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:23:07 ]
trunkにあるから書き換えてくれていいよ!



418 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 12:28:58 ]
D言語楽しい!

419 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:41:53 ]
さいきんBill Baxterさんが本家メイリングリストに出てこないなぁ。
お忙しいのか?

420 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:27:19 ]
>>418
The old collection package will be deprecated prior to Tango 1.0.
こういうところがだろ?wwわかります。

421 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:09:15 ]
ttp://www.dsource.org/projects/tango/forums/topic/523
これか
なんでいきなりそんなことになんのよw
あまりにもbetaがbetaとして機能してねえw

422 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:11:20 ]
D言語使いには勇者が多いw

423 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 14:05:08 ]
linux版のThreadクラスって、処理が終わってもリソース開放しないのな
Threadクラスはガベコレが見てるから、別クラスを作るわけにもいかないし
phobos書き換えないと使えないってどんだけ
std.fileもなんかおかしいし
linux版ってもしかしてだれも使ってない?
windowsから移ってきてみたら、びっくりだ

424 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:36:39 ]
たまにはソースとか読んでみようと思ったのに、
コンパイラにくっついてるのってひょっとしてフロントエンドの部分だけ?
コード生成とか最適化とかの部分はどっか別のところにある?

425 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:10:26 ]
>>424 その辺はdmcと共有してて非公開だったと思う

426 名前:デフォルトの名無しさん [2008/06/13(金) 16:24:39 ]
>>424
フロントエンド部分だけがGDC用に公開されてる。

427 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:58:39 ]
ttp://www.dsource.org/
みれないようわーん



428 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 20:35:38 ]
>>427 もう見える

429 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 02:14:13 ]
dsource.org の鯖はあんまり栄養状態が良くないよな。鯖そのもの
だけじゃなく、プロジェクトも abandoned なのが多いし。

430 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 02:34:32 ]
windows やら unix やらばかりじゃなくて、
組み込みとかにも目を向けて欲しいんだが。


431 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 02:37:06 ]
組み込みでGCやなんやはオーバースペックじゃないか?

まあ、最近は組み込みっていってもWindows動いてたりするけどさ。

432 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 02:41:09 ]
最近の言語では一番組み込みに適用できそうな予感
ある程度のスペックのあるターゲットになるだろうけど

433 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 07:51:10 ]
>>429
終わってるプロジェクトとそうでないものを区別して欲しいな
最終更新日時でソートするだけでもいいけど

434 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 11:44:06 ]
tango、現trunkにて、tango.util.logパッケージでも破壊的な変更が…
いいぞ、もっとやれ(笑)

435 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 13:55:46 ]
うぉるたんからして破壊的な変更大好きだし。

436 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:06:52 ]
D好きはマゾですか

437 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:12:28 ]
破壊的な仕様変更は普及してない時期にしかできないw



438 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:27:41 ]
つまりDはいつまでも破壊的に変更できるわけですね!

439 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 15:32:35 ]
プロトタイプは一旦作ってソースを捨てるのが
正しい方法らしいからいいんじゃねw

440 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 20:10:22 ]
>>439
金と時間に余裕がなきゃできないけどなw
一度やってみたいよ。

441 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 22:27:46 ]
>>439,440
ありがとう、やってみる。


442 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 01:11:12 ]
>>441 何をだろう・・・

443 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 01:26:51 ]
>>441はうぉるたん

444 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 01:35:24 ]
TangoがDの命名規則に従う伏線とか…

445 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 01:45:37 ]
>>443
やめてくれww

446 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:48:48 ]
tango.text.Regex の正規表現のコンパイルの遅さに萌え

447 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 10:09:02 ]
gdc on MinGWのビルドがうまくいかん。
2.x系が使いたいんだが、
最近のバイナリってどっかにないかな?



448 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:04:51 ]
をるたんそろそろ更新をあたえてくれ〜

449 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:03:08 ]
tango.text.Regexがdebugビルド不可なのは、何の意図なのだろうか

450 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 02:03:47 ]
debugなんてのは臆病者のやることだ。

451 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:21:22 ]
臆病者と馬鹿者のどっちになるかってことだな。

452 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:54:06 ]
うぉるたんやプロパティの+=はまだかいの

453 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:08:26 ]
さっき食べたでしょ

454 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:50:05 ]
C++のstd::vectorぽいことをしたいのですが

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

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

いまいちこれだという方法が無い気がするのです。
なにか良いライブラリ等ありますでしょうか。

455 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:47:21 ]
→push_backしたい。
int[] a;
a ~= other;

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

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


で無理かな?

456 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:30:55 ]
Version D 2.015 Jun 17, 2008
PICマイコン対応…と夢想しかけた。

457 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:36:30 ]
* Function templates can now deduce the return type if they are declared with auto.
戻り値型推論キター

* Added Constraints to templates.
どうせならconceptまで実装してくれよ。



458 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:44:30 ]
(1) auto func(T)(){ return 1; }
(2) auto func(){ return 1; }

(1)は通るのに(2)は通らない。けち臭いなあ

459 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:57:25 ]
auto func()(){ return 1; } でおk

460 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:58:50 ]
ああ、テンプレートはパラメータなしでもよかったのか。
でも、ばっちいお…

461 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:29:31 ]
戻り値の型推論!!
でもなんで無名関数とテンプレートだけなんだ

* Added Constraints to templates.
これは何かすげーなw

462 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:32:20 ]
テンプレートの型推論のルーチンを
使い回すのが難しいコードになってるとか邪推。

463 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:51:41 ]
無名関数の戻り型推論って結構まえからできなかったっけ?

464 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:01:38 ]
そだね
今回できるようになったと言ってるわけじゃないんだわ

465 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:14:16 ]
auto f()(){
typeof(return) a;
return a;
}

void main() {
f();
}

コンパイラしんじゃうよー

466 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 01:03:34 ]
Constraintにキーワードifつかっちゃったのか。
なんか気持ち悪いな

467 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 01:37:43 ]
予約語はできるだけ増やさない、みたいな方針があるのかな。
前から結構使いまわしてるよね。



468 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:05:49 ]
ちょっとlibpngが使いたいと思ってポートがあるかなと思って検索してみたら、
こんなスレがひっかかってちょっとワロタ

D言語でエロゲーつくって
ttp://pc11.2ch.net/test/read.cgi/gamedev/1091256780/


469 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:09:43 ]
DからDirectXってそんなに面倒そうでもなさそうなんだがな・・・・・?
Cとのインターフェースはあるんだから

470 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:12:49 ]
すでに実例あり
ttp://video.google.com/videoplay?docid=-3577027688253678001&q=D%E8%A8%80%E8%AA%9EBOF+2008-03-01&ei=mUFZSJScBobCwgO55s2IDg

.hから.dにするときにマクロの展開だけが面倒

471 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:21:43 ]
>>470
正真正銘プロの犯行に吹いたw

472 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:27:09 ]
>>470
なんという勇者w
DirectXなんてほとんど使ったことないが、
面白そうだからちょっといじってみるか

473 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:32:51 ]
>>468
まったく人がいなくて吹いた。
SDL+OpenGLのほうがポーティング揃ってるし、DirectX使うより楽だとおも。
たしかゲーム用にラップしたライブラリあったし。

あとフリーゲームの『去人たち』って、エロじゃないけどノベルゲで、D言語で作ってたはず。
ただシステム糞重くてうわーって感じだったけど。

474 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 09:45:23 ]
>>465
呼び出す側で古代C言語みたいにvoid型でキャストしよう。

475 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 12:14:53 ]
DのIDLコンパイラとか誰か作ってないのかなあ

476 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:15:34 ]
>>469
DirectXはCOMオブジェクトだから、ポーティングの仕方がCライブラリとはちょっとだけ違う。

477 名前:デフォルトの名無しさん mailto:構文上無理かね? [2008/06/19(木) 16:37:52 ]
ここまで型を書かなくてよくなったら
もういっそのこと無名関数テンプレートが欲しくなったんだがw
auto dg = (T,U)(T t, U u){ return t+u; };
するとこうなって
auto dg = (auto t, auto u){ return t+u; };
最終的にはこうか?w
auto dg = (t, u){ return t+u; };
これなんてマクロ?



478 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 16:40:21 ]
つーか、macroキーワードが使える日が早く来ればそれでいいんだよ…

479 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 16:50:40 ]
無名関数テンプレートが欲しいのは分かるが、できるとしても
alias (T,U)(T t, U u){ return t+u; } dg;
が精一杯。

480 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 17:09:07 ]
>>477
どうぞ。

auto dg = new class {
auto opCall(T, U)(T t, U u) {
return t + u;
}
};

481 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 17:27:30 ]
writeln(typeid(typeof((int i){})));

2.015でデリゲート型の引数が表示されないんだけど、前からだっけ?

482 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 21:08:46 ]
>>470
この会社に入りたい

483 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:04:03 ]
>>481
前からじゃない?
↓1.0
codepad.org/CREaEBun

484 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 02:58:03 ]
なんでBufferedFileはデストラクタでcloseしないんだ

とおもってソース見てみたら、そもそもデストラクタなかった。
どうなってんだよ。

485 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 03:26:35 ]
> これはつまり、 デストラクタからはメンバオブジェクトを参照できないことを意味しています。
これがなければデストラクタも使い物になるというものの…

486 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 03:57:45 ]
とりあえず必要だと思うのは、scopeメンバ変数だな。
コンストラクタで一回だけ初期化できて、オブジェクトがdeleteされるときに道ずれにdeleteするの。

487 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 04:04:44 ]
Tango導入しようかなあ…
phobosは統一性なさすぎて辛い…



488 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 14:30:25 ]
>>485
ファイルハンドルのような開放しなければならないメモリはガベコレの外にあるのだから、デストラクタに開放処理を書いても問題ないと思うけどね。

489 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 14:33:35 ]
IDisposable的なhackが必要になるってことか。

490 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 15:29:12 ]
>>485
これって、メンバオブジェクトをdeleteすることも認められないのかな?

491 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 18:20:16 ]
あーもー英語使わなくてもphobosのtrunkにコミットできたい

492 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 19:39:11 ]
staticメンバにリストを作って管理とか無理かな

493 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 21:29:05 ]
>>486
そんなのイラネwwww
って思ったけど、必要だな・・・

494 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 21:45:08 ]
>>488
たしか、デストラクタって呼ばれる保証はないんじゃなかったっけ?
だとしたら確実に行われなければならない処理をデストラクタに書くことはできないと思うのだけど。

495 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 23:10:12 ]
デストラクタからcloseとかの後始末関数を呼べばいいよ。
scope変数に入れたときは、必ずスコープアウトするときにデストラクタ呼ばれるから。

496 名前:デフォルトの名無しさん [2008/06/21(土) 23:15:25 ]
C++で言うところの純粋仮想関数のように、
抽象クラス側のメンバ関数定義において
派生クラスで必ず上書きをする事を明示する修飾子ってありますか?

497 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 23:19:56 ]
abstract



498 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 23:26:36 ]
>>497
ありがとうございます!

499 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 23:27:51 ]
abstract属性

500 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 03:41:51 ]
  auto outfile = new FileConduit("output.txt", FileConduit.WriteCreate);
  auto file = new FileConduit("hogehoge.txt");
  auto buf = new BufferInput(file);
  while (buf.fill(buf) != IConduit.Eof) {
    auto str =  buf.slice(buf.readable);
    Cout.output.write(str);
    outfile.write(str);
  }
Tango なんだけど、Conduit から入力したものを複数の Conduit(?) に出力したいとき、
こういう風に一回バッファを介すしかないの?なんだか妙に生ぐさいやり方で気持ち悪いんだけど、
もっと良い方法ない?Conduit, Buffer, Input/OutputStream のあたりの仕組みが全く理解できない

501 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 05:45:30 ]
OutputStreamを継承して、複数のOutputStreamに流し込むようなオブジェクトを作ればいいのでは?
codepad.org/hco2juAc

502 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 07:15:28 ]
std.algorithmって今のところ配列にしか使えない?
自作のコンテナでも、イテレータ定義すれば使えるのかなと思ったんだが、そもそもイテレータの作り方がよくわからん。
opStarAssignとかないし。

503 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:34:52 ]
>>502
それ、以前調べたけどまだ無理だと思う。
std.algorithm の中でイテレータに対して foreach range 文を使ってるんだけど
現状では foreach range 文をカスタマイズできないから、独自イテレータを定義できない。

504 名前:500 mailto:sage [2008/06/22(日) 13:27:30 ]
>>501
おお、わざわざdクス。その方向でいってみるよ、ありがとう。

505 名前:500 mailto:sage [2008/06/22(日) 17:02:06 ]
あやしい InputFilter を作ることで、どうやらやりたいことが出来たみたいだ。
改めて>>501にdクス。
ttp://codepad.org/FtRWpF3b

506 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 19:23:09 ]
ConduitとStreamってどう違うの?

507 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:13:10 ]
IConduitはInputStreamかつOutputStreamなのだから、同じなんじゃないかと。
ただ、どうやらConduitがベースになってて、他の便利なストリームに突っ込んで使うのがいい感じらしい。
Conduitは「入出力先」、Streamは「使い方」みたいな使い分けなんじゃないかと思う。
あと、InputStreamとOutputStreamはほかのStreamとは若干違って、Conduitの役割をInputとOutputで分割したようなものだと思って使ってる。



508 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:15:20 ]
>>503
なる。どうもありがとう。
……がっかりだーorz

509 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 09:16:36 ]
はぁ?手軽に最高速がDの売りなんじゃないですかぁ?
バカなの?

ぶっちゃけC++のほうが100万倍マシ

510 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 09:22:31 ]
ええ全く、ウォルタンに言ってやってくださいよー

511 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 09:25:52 ]
>>509
元ネタはRubyだったのに何でC++に変えたの?

512 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 13:40:30 ]
複数ファイルを一度にimportする方法ってありますか?

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

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

とかあった場合に

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

とかして
import include;
でaとbをimportみたいにしたいのですが。

513 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 14:02:24 ]
public import a, b;
とかかな。
調べずに発言

514 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 14:43:31 ]
文字配列の連想配列の配列の配列の長さを変えるにはどうしたらいいのでしょうか
int main(){
char[][char[]][] list;
list.length = 100;
return 0;
}
とすると途中で止まってしまいます。
どのようにしたら止まらせずにlistの長さを伸ばしたり縮めたりできるのでしょうか


515 名前:514 mailto:sage [2008/06/23(月) 14:46:04 ]
すみません既出のバグなんですね…
>264試してみます

516 名前:514 mailto:sage [2008/06/23(月) 15:04:03 ]
すみません、やっぱり分からないです
nullで埋めるというのも分かりません
list[0] = null; とやっても使えないですし

連想配列を含む配列は使わない方がいいのでしょうか

517 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:30:43 ]
別にそれ自体として使わないほうがいいってことはないだろうが、
バグがあるんだから使わないほうがいいだろう。実際に使えないわけだし。



518 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:41:51 ]
動いた
codepad.org/og1d1ogP

519 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:44:49 ]
連投失礼
しばらくしたら消えるみたいだし、一応貼っておく
--
int main(){
typedef char[][char[]] Map = null;
Map[] list;
list.length = 100;
writef(list.length);
return 0;
}

--
100

520 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:51:37 ]
しばらくといっても結構長いみたいだね
>>20のもまだ消えてないみたいだし

521 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 19:12:28 ]
>>20
template Res(int N, O)
{
res!(N) << O.toString();
in { assert(O >> N); }
invariant O = N;
enum O = N;
throw new O(">>" ~ N.toString());
}

mixin Res(1, 乙);


はっちゃえ

522 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 19:43:26 ]
何のコードかと思ったら>>1乙とはw

523 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:02:01 ]
foreach( i, v, vs) {
 if( v.noneed ) {
  vs.remove(i);
 }
}

これが、2.0.15でできなくなった・・・
しかたないか

524 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:11:30 ]
foreach( i, v; vs) {
じゃなくて?

525 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:21:00 ]
あ、それそれ ごめん

526 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 23:08:02 ]
>>518
ありがとうございますm(_ _)m
不思議だ…
何でtypedefかませると動くんだろう

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

既出だろうけどモジュールと同じ名前のディレクトリがあるとldで躓いてコンパイル失敗するね
>519を動かそうと思ってn.dってファイル作ってdmd nさせたら
nってディレクトリがあるもんだから失敗した\(^o^)/

527 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:17:50 ]
ttp://dsource.org/forums/viewtopic.php?t=3279
このやたらハイテンションな中国人によると、Entice Designer で日本語が入力できない問題は、
同梱の Scintilla のバージョンが古いせいらしい。このポストのとおり、SciTE のバイナリを
落としてきて、SciLexer.dll -> enticelex.dll にリネームして上書きすれば日本語が通ったよ。
Entice、補完はいまいちだけど Descent より軽いので、漏れはコードエディタとして重宝してる。



528 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:30:56 ]
連想配列のlengthは読み取り専用だから>>261は動かなくて当然だけど、
>>514は連想配列か普通の配列かの判断が甘いから起こるのかな。
typedefすれば確実に普通の配列だとわかるからlengthに値をセットできる、と。

529 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:47:32 ]
>>528
その理屈はおかしい、
>>261のaは連想配列ではなくて動的配列だし、
typedefすることによって型の曖昧さが減るということもありえない。

530 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 07:09:37 ]
実行環境がLinuxだからとかではなくて?

531 名前:518 mailto:sage [2008/06/24(火) 08:01:25 ]
一応説明すると、
配列のところ読んだら連想配列も動的配列も長さ0で初期化されるとあったから
ふとtypedefするときに初期値を新しく指定できるっていうのを思い出して試しただけだったり
(最初は適当な配列で初期化しようとしたけど、連想配列リテラルがよく分からないからnullにしたら動いた)
試しにtypedefの
= null
を削るとcodepadでもTimeoutする

何で初期値指定すると動くのかとかはよく分からんが

532 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 15:15:58 ]
>513
できました!ありがとうございます。

533 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 17:30:23 ]
>>531
本来、nullと長さ零の配列は同じ扱いのはずなんだけどねえ

534 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 21:55:41 ]
全く同じわけではないらしい

void main()
{
int[] a = null;
int[] b = [1,2,3];
b.length = 0;
assert(a == b); // success
assert(a is b); // fail
}

535 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 22:30:46 ]
>>533
最初の頃はそういってたけど、いつの間にか仕様が変わったらしい。

536 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 11:08:17 ]
下記のように場合に、インナークラスから自身が持つフィールドと同名の
親階層のフィールドにアクセスしたい場合の方法ってありますか?
superは継承の場合だし、CTest.Value_はコンパイルエラーに。

class CTest
{
 int Value_;
 CInner Inner_;
 class CInner
 {
  int Value_;
  void Function(){
   // 自身のValue_を表示
   writefln("%d",Value_);
   // 親階層のValue_を表示する場合は??
   writefln("%d",???);
  }
 }
 this(){
  Value_ = 1;
  Inner_ = new CInner();
  Inner_.Value_ = 2;
 }
 void Function(){
  Inner_.Function();
 }
}

537 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 11:28:43 ]
>>536
ttp://www.kmonos.net/alang/d/2.0/class.html#nested



538 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 11:50:47 ]
>>537
ありがとうございます。
this.outer.Value_ でいけました。


539 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 13:42:23 ]
そういえば outer ってキーワードなのな

540 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:34:50 ]
conceptまだー?

541 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 01:31:03 ]
image.blog.livedoor.jp/warosmania/imgs/0/6/063e2fb7.jpg

542 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 01:38:53 ]
何やらブラクラ危険と専ブラが教えてくれるのだが

543 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 08:44:44 ]
>>542
心霊写真と見せかけてしばらく見てると白粉野郎がアップになるやつ。

544 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 16:03:15 ]
しばらくってほど時間が経過しないのがなんだかな
じーーっくりと見させてからやった方がダメージ大きいのに

545 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 16:27:51 ]
専ブラによってはアニgifのサムネイルが最後の1枚になってたりして効果ない
びびったけど

546 名前:デフォルトの名無しさん [2008/06/28(土) 02:31:24 ]
>>541
びびった。だがD関係ねーや。

あるいはこれがまだ見ぬヲルタンの素顔なのか?

547 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 02:58:59 ]
ウォルたんにヒゲはあるのだろうか



548 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 04:10:10 ]
テンプレートって計算完備?

549 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 06:08:29 ]
折りたたむだけ

550 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:30:05 ]
hoge hige hage

551 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:40:23 ]
朝起きたら枕元に美少女死神が立ってて鎌で殺してくんねえかなあ…はぁ…

552 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:45:54 ]
Constraintsって何か意味あるんですか?
static ifで同じことができる気がするんですが

553 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:48:19 ]
>>552
分けてかけることに意味があるんじゃない?
よくわからんけど。

554 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:03:45 ]
>>553
うーん、わざわざ構文拡張してまでやることなのかな…
まあよく考えたら将来的な理由かもしれないし、
あんまりこだわらないことにします

555 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:36:32 ]
スクリプト言語ひとつ覚えたんで、次は念願のコンパイル型言語を――と思って
Dを狙ってるんですが、このスレ見る限りやめたほうがいいような気がしてきました。
この言語将来性あるんでしょうか? こんなに利用者にコケにされてる言語はじめてみた。

556 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:41:27 ]
このスレは信者だらけだから、少なくともコケにはされてないだろ。

557 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:43:11 ]
……コケにされてるか? むしろこのスレでは愛されてると思うんだがな。

まあそれはさておき、バイナリ吐く言語使いたいなら素直ににC/C++やった方がいいと思うんだ



558 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:49:54 ]
>555
初のコンパイラ方式をDにするのはやめたほうがいいのではないかと。
CかJavaかC#が良いと思う
Dは、ある程度以上の実力者が戯れるのには最適な言語だと思う

559 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 22:00:03 ]
いろいろできたのう

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

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

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

// CTFE
int factorial(int n) {
if(n != 1) return n * factorial(n - 1);
else return 1;
}

560 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 22:04:41 ]
Java出身者にはテンプレートが魔法に見えるから困る
これだけでチューリング完全とかw

561 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 22:11:52 ]
なんというか、There's more than one way to do itって感じになってきたな…

562 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 00:37:59 ]
もともとそういう志向はなきにしもだったからな
でもテンプレート周りとかconst周りはmore than one wayだけでもないぜ。
コンパイル時に決定可能かどうかという重大な違いがある

563 名前:555 mailto:sage [2008/06/29(日) 00:48:50 ]
色々ありがとうございます。
言語仕様や標準ライブラリにいろいろけちつけるのは愛の鞭だったんですね。
初のコンパイラ型言語ってわけでもないので(Cを一通り。MinGWのWindows SDKにあちこち不備があるのが鬱陶しくなってやめた)
忠告を聞かずにDの世界に飛び込んでみます。

564 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 00:55:09 ]
>不備があるのが鬱陶しくなってやめた
ここがひっかかるw
Dはそんなのの塊のような気がす

565 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 01:02:32 ]
ゲーム作るのでなければwxDを使えばいくらか幸せになるかと

566 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 01:24:57 ]
>>564
> >不備があるのが鬱陶しくなってやめた
> ここがひっかかるw

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

と、ここまで書いてちょっと調べてみたらwxWidgetsって普通のGUIツールキットとはちょっと違うんですね。これは素敵かも。

567 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 11:58:28 ]
メモリの配置を覚えるためにもやっぱC/C++あたりを使うのがいいだろうな
CはやることやったらすぐC→C++でもいいと思うし



568 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 12:46:39 ]
C++は時間の無駄だと思ってるからやっぱりDで

569 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 12:55:40 ]
Dこそ時間の無駄で終わらなければよいが…って思ってる
いつか仕事で使える日が来ることを期待してるが

570 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 13:11:16 ]
仕事で使わせてくれる会社に入ればいい

571 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 13:26:44 ]
Hoge hoge = new Hoge();
SetWindowsLong(win, GWL_USER_DATA, &hoge);

ってかんじでウィンドウにインスタンスをひも付けさせたら
しばらくは使えるんだけど、そのうちインスタンスが
まともにとれなくなるのはやっぱりGCのせい?


572 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 13:53:34 ]
>>571
yes.
どこかに参照を残しておかないとなくなる。

573 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 14:36:45 ]
カーネルオブジェクトの中にある参照をGCが見つけられるわけがない

574 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 15:06:22 ]
DのGCって、再配置型?

575 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 20:16:29 ]
>>571
そもそもDのクラスは参照型なので、やるとしても
Hoge hoge = new Hoge();
SetWindowsLong(win, GWL_USER_DATA, cast(void*)hoge);
こうじゃないか?
&hogeだとhogeの寿命が来た時点でダメになる気がする。

576 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 21:58:12 ]
>>575
GreenPadのソースみながらウィンドウプロシジャ周り(0x042444c7の)をDでやろうとした時に引っかかったw
冷静になって考えれば簡単なミスなんだが。結構考え込んだ気がする。

577 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 22:25:48 ]
GWL_USER_DATAでぐぐったらこのスレが出た。
9時間弱しか経ってないのにgoogleすごいな



578 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 22:31:21 ]
最近のゴッゴル先生とか凄いよな…
足りない情報を探そうと思ったら〜というのを探してますっていう昨日の自分の書き込みがヒットしたり…

579 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 23:56:57 ]
2chで質問して反応がないので、後日検索すると
自分の質問が検索結果のTOPにでる悲しさ

580 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 04:32:39 ]
最近のゴッコル先生は2chのクローリング頻度をやたら上げてるからな
2chで質問してから2時間くらいで自分の質問が引っかかったことがある
しかし自分のブログは一切かからない

581 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 06:23:57 ]
更新頻度でクロール頻度も変えてたりするのかね

582 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 08:54:49 ]
switch〜case で break 書かなきゃ下に降りちゃうの?
こんなとこまでCを真似なくていいのに

583 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 09:08:02 ]
caseで複数条件に対して一つの処理にしたいときにできないと困るじゃない

584 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 09:40:12 ]
>>541見て心臓が痛くなったんだけど訴えたら勝てるかな

585 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 09:54:58 ]
すぐ下でびっくり系のブラクラって説明されてるのにクリックするなよ

586 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 10:17:15 ]
2ちゃんねる鉄の掟.

出されたご飯は残さず食べる。
転んでも泣かない。
おいら(ひろゆき)のギャグには大爆笑する。

587 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 12:46:30 ]
>>583
switch(n) {
case 1: ...
case 2,3: ...
case 4,5,6: ...
}
でいい



588 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 12:50:23 ]
そんなことよりもほかの言語との整合性が取れなくなって余計なヒューマンエラーが発生することのほうが問題。
って我らがうぉるたーたんのお達しだ。諦めておけ。

589 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 12:52:13 ]
まぁ、違う仕様にするならキーワードを case じゃなくて when にするとか
しないと混乱するしな。

590 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 13:54:04 ]
個人的にはswitch_breakみたいな名前でも欲しい
でも、無くてもそんなに困らないし、
そんなことよりライブラリをどうにか…

591 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 20:41:27 ]
case 0..10とかできないのかな。VBみたいだけど。

592 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 23:14:06 ]
いよいよ ... がほしくなる

593 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 23:23:22 ]
vbといったらcase is

594 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 01:54:49 ]
MPDさんのウィンドウは閉じないww

595 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 01:55:25 ]
誤爆すまぬ

596 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 03:47:38 ]
>584 はbreak; って書かれても fall thru しちゃういけない子

597 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 05:58:54 ]
switch (url) {
case ブラクラ:
if (res!=584) throw new bad_res;
}

こうですか?わかりま(ry



598 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 06:10:32 ]
res = 584;goto case ブラクラ;

599 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 10:50:14 ]
nullオブジェクトにアクセスしたときにAccess Violationになりますが、
このときにうまくスタックトレースを取る方法がありますでしょうか。
flectionedを使うと例外の場合のスタックトレースは取れたのですが……



600 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 16:43:35 ]
そこはddbgじゃねーかな

601 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 17:13:59 ]
関数内で定義したローカル変数のポインタを返しても大丈夫ですか?

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

みたいにした場合にスコープを抜けてもアドレスは有効なのでしょうか。


602 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 17:22:57 ]
今年のD言語カンファレンスは、スピーカが集まらなかったので中止に
lists.puremagic.com/pipermail/digitalmars-d-announce/2008-July/009696.html

il|li orz il|li


603 名前:601 mailto:sage [2008/07/02(水) 17:45:01 ]
自己解決。
良いわけないですね。コンパイルエラーになりました。

604 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 17:49:37 ]
>>602
あらぁ…w

605 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 20:06:05 ]
東京でやってくれるなら喋りに行くのに。

606 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 20:37:56 ]
ネタがないっす

607 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 20:40:31 ]
英語ミリ



608 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 21:52:24 ]
>>602
え?どうせ行くつもりなかったけどいつ募集してたの?

609 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 21:57:19 ]
>>608
普通にずっとNGで募集してたと思うが。

610 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 21:56:38 ]
更新まだー?

611 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 01:03:37 ]
おまいらNGって何で読んでる?

612 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 02:46:14 ]
俺はfirefox

613 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 06:42:09 ]
thunderbirdで読んでる

614 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 16:28:12 ]
D2.0とphobosでeliminateなどで使用する叙述関数に
任意の引数を渡したいのですが、可能でしょうか?

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

とか

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

のような事をやりたいのですが。

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

標準ストリームはdin,doutでいいんだけど
CFileを使うのは気が引ける。fopenとかいまさら使いたくないし

616 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 17:08:14 ]
時間ないから簡単に
前者はmixinで文字列生成
後者は
static bool Func(int Value)(int Src){return Src < Value;}
eliminate!(Func!(10))(Nums)
とか?
試してないから間違ってたらごめん

617 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 17:10:44 ]
ええい
mutable typeからinvariant typeへは明示的な変換が必要だからidup
string s = stream_.readLine().idup;



618 名前:615 mailto:sage [2008/07/04(金) 17:45:28 ]
>>617
っていうか標準ライブラリなんだからinvariant仕様に直しとけと言いたい
Fileをカプセル化した自前クラスで美味しくいただけそうです

619 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 21:35:03 ]
std.stringは全部をconst(char)[]にしてもらいたい
更新まだかなぁ・・・

620 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 23:50:07 ]
>>614
とりあえず成功する例
かっこ悪いのでbindとか関数リテラルがどのくらい効くのか教えていただけると助かります

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

void main(){
        int[] Nums = [1,2,3,4,5];
        Nums = eliminate!(func)(Nums);
        writefln(Nums);
}

621 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 23:55:51 ]
>>616
後者は動きました。
>614のコードにはめると
eliminate!(Func!(Value))(Nums)
で動きますね

622 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 01:33:35 ]
Valueを用意する必要がないのでは?
あえて定数に名前を付けたいのなら enum Value = 3; をおすすめ

623 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 01:34:07 ]
あと std.bind はずっとぶっこわれ中

624 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 11:41:28 ]
lazyな引数を関数外部に持っていく方法あったら教えてくれ〜


625 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 13:46:31 ]
void delegate() dg;
void func(lazy void a) {
dg={return a;};
}

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

void func(void delegate()[] a...);
でも使っとくといいと思う。

626 名前:614 [2008/07/06(日) 01:30:55 ]
すいません、説明不足でした。
というか提示した例が悪かったです。
比較したいValueは動的な値です。

const int Value = 3;

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

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

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

のようなことがやりたいのです。


627 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 01:47:05 ]
謎さんとこのstd.expressionとか。



628 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 01:49:21 ]
phobosのstd.algorithmはコンパイル時に決定してる関数しか受け付けないから不便だな。
とっとと、static引数導入してオーバーロードで関数ポインタとかも取れるように整理してほしいわ

629 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 03:06:20 ]
自分で書くしかなくね?
import std.stdio;
T[] removeIf(alias cond, T)(T[] arr) {
T[] ret;
foreach (i; arr)
if (cond(i))
ret ~= i;
return ret;
}
void main() {
auto less3 = (int i){return i < 3;};
static bool greator3(int i){return i > 3;};
int[] arr = [1,2,3,4,5];
writefln(removeIf!((int i){return i<4;})(arr));
writefln(removeIf!(less3)(arr));
writefln(removeIf!(greator3)(arr));
}

630 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 03:12:21 ]
closureあるから
int j = 3;
auto less = (int i){return i<j;};
これできるよ

631 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 03:26:59 ]
名前が付いてないとダメだってのは使い勝手が悪いな

632 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 08:29:38 ]
俺もそう思ってたが実は無名関数でもいけてる件

633 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 13:14:43 ]
>>632
コードplz

634 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 16:05:28 ]
>>629のこれのことなのだが
writefln(removeIf!((int i){return i<4;})(arr));
もしかしてphobosの話だろうか

635 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 17:20:20 ]
こないだのアップデートからリテラルのaliasも取れるようになったんだっけか。

636 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 19:50:48 ]
ああそれでか

637 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 21:17:26 ]
連想配列の clear ってどうやるですか?



638 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 21:33:51 ]
新しいのと取り替えればいいんじゃない?

639 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 22:03:14 ]
これでよくなかったっけ
int[int] a = [1:1];
writefln(a);
a = null;
writefln(a);

640 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 22:23:11 ]
それは空のと取り替えただけでクリアしたと言えるかは疑問だな。
もとのaの参照をどこかで持ってれば、そっちはクリアされないわけだし。

641 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 22:38:19 ]
foreach (key; aa.keys)
  aa.remove(key);
じゃダメ?

642 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 02:05:06 ]
2.016まだかよー

643 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 13:24:28 ]
>629
やりたかったのはまさにこれです。
ばっちりです。ありがとうございました。

644 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 13:47:40 ]
D言語の配列は参照型だとあるのですが、引数で渡す場合は確かにrefを
つけなくても参照で渡されているのですが、返値で返した場合って.dup
されたものが返されてしまうのでしょうか?

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

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

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

配列に限らずD言語で参照返しする場合ってどうやるのでしょうか。


645 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 14:22:17 ]
もうすぐTango 0.99.7リリース来そうですね。
twitter.com/larsivi/statuses/851357615


646 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 14:58:32 ]
>>644
Nums ~= 4; の直前と直後の配列のポインタを見てみるとわかるけど、インスタンスが変わっちゃってる。
# ということは、 ~= の演算子は配列のインスタンスに対する捜査ではなくて、配列のインスタンスを保存している変数に対する操作っていうこと…かな?
classの場合は普通に返せる。配列だけは操作するときにインスタンスが同じものになるかどうか注意しなきゃいけない。
# 配列の要素を増やす時は違うインスタンスになる場合があって、配列の要素を減らす場合にはインスタンスは変わらない。
tangoのArrayBagみたいなクラスでラップすると幸せになれるかもしれない。

647 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 15:09:35 ]
Core2DuoE6600の環境なんだけどstd.cpuid.amd64がtrue
笑っちゃった。俺の環境がおかしいのか?



648 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 16:06:54 ]
>646
試してみましたが自分の環境では ~= の前後ではアドレスは変わらなかったです。
そして引数で渡したときはアドレスが変わらず、返値で返した場合はアドレスが
変わっていました。

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

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

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

やはりクラスでラップするのが安全なのかなぁ。

649 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 16:13:58 ]
たぶん勘違いしてる、というか俺の伝え方が悪かった。すまん。
配列のポインタは Nums.ptr これで得られる。
codepad.org/tvVXZGEx
↑を参考にするとわかると思う。
# ちなみに、容量をリザーブしておくとインスタンスが変わらない。
# コメントアウトをはずすと同じポインタになる。

650 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 16:26:26 ]
>>648
codepadの環境では、前後でアドレスは変わった。
codepad.org/Mxf3ifJm
> Test.Nums: [401C3FB0]
> main.Nums(before): [401C3FB0]
> main.Nums(after): [401C2F80]

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

一個のメンバ変数を対象として変更する場合はメンバ変数への参照(ポインタ)を返してやればいいけど、
それだとTest.Numsの指す配列が他の変数によって参照されてたりするとやっかいな問題になると思う。

651 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 16:50:42 ]
>>647
AMD64とEM64Tってほぼ互換じゃなかったっけ

652 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 16:53:20 ]
>>649
> # ちなみに、容量をリザーブしておくとインスタンスが変わらない。
> # コメントアウトをはずすと同じポインタになる。
ホントだ。

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

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

こういう仕様なのかバグなのか。実装を考えればこの挙動は自然だけど……

653 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 17:19:30 ]
>>651
俺の無知か。スマソ

654 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 17:58:19 ]
lengthを増やすとアドレスが変わってしまいますね。
そしてリザーブしてもアドレスは変わらないが、追加されたメンバが
更新されないと……

codepad.org/Kg0yzNfz
みたいに引数にリファレンスで渡した場合は追加されるので、それと
同じ事が返値でもできればいいのですが。
C++のように返値のリファレンス指定でできないんですねぇ。

655 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 18:29:01 ]
std.xml、マニュアルにあるサンプルプログラムちゃんと動く?
どうしてもうまく動かない・・・
2.0.15です

656 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 18:50:59 ]
前に誰かがstd.xmlが動かなくなったって言ってたような・・・
trunk版でも無理なのだろうか

657 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 19:23:54 ]
>>654
>C++のように返値のリファレンス指定
俺もこれほしいかも
というか、参照とかポインタとかはC++のほうがわかりやすくて好きだ…



658 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 00:43:38 ]
(関数ポインタを除く)

659 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 00:57:05 ]
>>645
linux環境だと、Theadクラス使うと落ちまくってとても使えたものじゃないのだが、
いつになったら直るのだろうか・・・

660 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 13:22:48 ]
>>645
ん、まさか tnago に DBI でもマージするつもりなのか…
アレの SQLite バインディングは動かないコードのまま trunk に放置されてるからなぁ…

661 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 00:02:39 ]
>>645
じゃあ、0.99.7に移行する前に破壊的変更の予習。
www.dsource.org/projects/tango/wiki/0_99_7_BreakingChanges
今回多いなw

662 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 01:17:41 ]
>>661
>tango.io: The use of FilePath and PathView in FileConduit is deprecated in favour of char[] paths
>tango.text.xml.XmlPrinter: Deprecated in favor of DocPrinter
>tango.group: Deprecation period expired, so will be removed.
ここら辺はかなり厳しそうだな。

663 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 02:17:16 ]
phobosのtrunkが大量に更新されてる件

664 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 02:24:07 ]
あ、やべぇ、なんかTangoのD2.0のマージ来た…!?
www.dsource.org/projects/tango/browser/branches/experimental/D2.0

665 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 03:23:46 ]
暴走するのはPhobosだけにしてくれよ…

666 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 03:34:05 ]
これはDコミュニティの文化だよ

667 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 04:46:53 ]
>>664 キタ━(゚∀゚)━!!



668 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 11:04:08 ]
PhobosとTangoがなかよくなりますように・・・

669 名前:デフォルトの名無しさん mailto:sage [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 dsource.org/projects/phobos/browser/trunk/tools/rdmd.d
- Simplified std.algorithm by fusing together higher-order functions taking an alias and their counterparts taking a string
-Added module std.array containing array operations: insert, erase, and replace
-Changed the enforce's implementation to generate smaller code per call
-Changed std.functional.binaryFun to work with strings and function aliases alike
-In std.getopt, added optChar, assignChar, and endOfOptions, per popular demand :o|
-In std.math, replaced a bunch of consts with enums
-In std.numeric, added Don Clugston as author and operated minor documentation fixes
-Improved std.stdio.chunks to take an iteration tally in addition to the chunk

また、すごい変更がw



670 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 19:16:19 ]
大して大きくないような。.__vptrと.__monitorは今まで無かったのが(ry
それより修正して欲しかったバグの修正ktkr

671 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 20:07:24 ]
よくわからん・・・誰か要点を・・・

672 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:05:19 ]
>>671
opEqualsの戻り値型が変わったことぐらいだろ。

673 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 12:38:58 ]
stringzとかいう型出来ないかな

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

toStringzで事足りるんだけどな

674 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 16:34:06 ]
>>673
リンケージによって文字列の内部構造が変化するのは便利かもだけど怖い

675 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 20:38:11 ]
opEqualsとうとうboolになったのか。
パフォーマンスが云々うぉるたんが抵抗してたのは解決したんかな。

しかしTangoはどうあってもモジュール名のUpperCamelを止める気はないのだろうか。

676 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 21:39:03 ]
>>675
いまさら変えられても混乱するしこのままでいいかなって最近思ってきた。

677 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 21:49:20 ]
opAssign定義した構造体の連想配列に新しく要素を格納しようとすると落ちるのは何でなんだぜ?



678 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 23:18:34 ]
独り言だけど、Win32 とのやり取りが面倒なので、
普通にマルチバイト文字が使えるようにして欲しい。

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

みたいな。

679 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 00:05:18 ]
今更A関数なんて使わないっしょ。W関数で十分っしょ。とか言われてたなあ。

680 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 03:19:48 ]
>>678
それはコンパイル時に文字コードが決まるの?それとも実行時?

681 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 03:23:24 ]
CTFE-ableな変換関数をですね…

const achar* track_name[] = [astring("日本語"), astring("日本語")];

682 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 08:59:23 ]
もうShift-JISはやめようぜ

683 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 11:30:13 ]
今更A関数なんて使わないっしょ。W関数で十分っしょ。

684 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 12:46:38 ]
dic.nicovideo.jp/b/a/D%E8%A8%80%E8%AA%9E/1
誰だよ

685 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 13:41:25 ]
いまどきデフォルトエンコードがUFT-8じゃないOSが糞ということ

686 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 13:45:36 ]
>>684
>5のマヌケな足の開き方が素敵

687 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 13:48:48 ]
主要なソフトがsjisにも対応していればいいだけの話で
過去との互換性を気にするならば
最低限のテキストエディタのメモ帳ぐらいが対応すればいい話

win用で人気のあるテキストエディタはutf8とか対応してるしな



688 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 14:49:14 ]
はやくstdoutにフィルターをかぶせられるようにしてほしい。

689 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 20:18:32 ]
クラスに単純な値コピーをさせる方法ってありましたっけ

690 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 20:59:24 ]
>>688
ああそういうことができるんだね
でもできないんだね

>>689
あったっけ?なかったような

691 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 22:59:57 ]
中文やらハングルやらが扱えないようにおれは A のAPIでやってるぜ。

692 名前:デフォルトの名無しさん [2008/07/12(土) 01:28:36 ]
だいぶ前に出てて挫折してた
「dsource.orgのWin32Api Bindingsをdmd2.0でコンパイルすると出るエラー」

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

>>340(いつからなおってたんだー!?)
やっと2.0系に復帰できるワァ

693 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 01:41:01 ]
>>692
半年前には大丈夫っだった気がするが、
使ってるAPIの差かもしれん

694 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 06:31:50 ]
>>692
DMD2.016でまたむりぽ

695 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 07:25:41 ]
>>692
半年前には直ってたものを壊れた瞬間に知るとかw

696 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 07:28:55 ]
型なのに型として認識してくれなくてやってた苦肉のtypeof(型)ができなくなってるね
元々の問題が修正されたのならいいのだけど

697 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 10:44:36 ]
DMD 2.017 リリース



698 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 11:16:58 ]
>>697
まじだ
バグフィックスだけだね

699 名前:デフォルトの名無しさん [2008/07/12(土) 15:04:08 ]
Webから画像ダウンロードできたりしますか

700 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 15:27:12 ]
できる。

701 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 21:05:40 ]
>>678
だからUTF-8でない文字列をchar*に入れるなとあれほど…

702 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 21:12:50 ]
mbsはubyte*にするべきだったりするの?

703 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 21:14:19 ]
>>702
もちろん

704 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 22:16:11 ]
charはutf-8って規格で決まってるからな−。
それ以外が入ってるのは気持ち悪いというか、間違っているという話。


705 名前:デフォルトの名無しさん mailto:sage [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

706 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 00:35:33 ]
もうstd.encodingがあるしやるならその上に作るべきでは

707 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 00:37:29 ]
>>705
wstring toUTF16(in mbchar[] s, in uint codePage=0)
{
mbstring sz = (s ~ cast(mbchar)'\0').idup;
wstring result;
result.length = MultiByteToWideChar(codePage, 0, cast(char*)(sz), sz.length, null, 0);
MultiByteToWideChar(codePage, 0, cast(char*)sz, sz.length, cast(wchar*)result, result.length);
return result;
}

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

MultiByteToWideChar(codePage, 0, sz.ptr, sz.length, result.ptr, result.length);
でコンパイル通るように直したほうがいい。



708 名前:デフォルトの名無しさん [2008/07/13(日) 01:23:06 ]
Dで外部アプリの実行とかってどうやればできますか。

709 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 01:27:03 ]
>>707
>>708
import std.process;
std.process.system("dir");

710 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 01:31:20 ]
>>706
正直申し上げますと、あれインターフェイスが糞すぎる

711 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 01:34:08 ]
>>709
あ・・・ありがとう。
CreateProcess使ってできてやったーとか思ったらそんな簡単に・・・

712 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 01:35:03 ]
std::basic_stringの仕組みを丸ごと移植したらどうかと思うのだが

713 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 01:44:57 ]
>>707
> MultiByteToWideChar(codePage, 0, sz.ptr, sz.length, result.ptr, result.length);
> でコンパイル通るように直したほうがいい。
え・・・そんなんできんの・・・

714 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 02:02:06 ]
OpenGLのポーティング、D2.0でもデフォのまま使えるようになったのね
さっき最新取ってきて直そうと思ったら、既に修正済・・・感動した

715 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 02:07:24 ]
Linux系でD言語やろうと思ったらここ見ればいいってHPないですかね。

716 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 02:07:29 ]
>>713
???

717 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 02:11:21 ]
>>716
MultiByteToWideChar(codePage, 0, sz.ptr, sz.length, result.ptr, result.length);
キャストなしのこれをコンパイルエラー出さずに書くやり方があるのかなと



718 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 02:50:24 ]
もうperlみたいにしてしまえ

719 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 04:22:25 ]
tangoのProcessってサンプル使ってもうごかないんすけど。

720 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 04:25:54 ]
よくあること

721 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 04:41:14 ]
Executeしないと動かなくなってた><

722 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 05:20:48 ]
HttpClientのGetResponseが爆発してて自分の手に負えません。

だれか画像ゲットのやりかた教えてください。

723 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 08:40:25 ]
1年ぶりに着たけどやっぱ仕事では使えなさそう。
俺と同じ。知ってた。

724 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 09:09:18 ]
>>720
本当に良くあるから困る
stdioのwriteflnの時は俺がラリった
ioを自分で作成して出力せにゃいかんのかと思ったり

725 名前:722 mailto:sage [2008/07/13(日) 09:29:22 ]
Descentが教えてくれる関数一覧を信じすぎました。
事故解決。

726 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 18:23:13 ]
だから安定版ならD1.0があると(ry

727 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 18:36:52 ]
D1.0系列って本当に安定してるの?



728 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 18:37:31 ]
仕様は安定してるよ。

729 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 18:55:23 ]
>>726-728
わらた

このままバージョンが変わらないでいてくれたら
D-1とかD-2とかいう扱いでコードの配布が安定できて嬉しいな

730 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 19:00:23 ]
D2.0が安定化するころにはD3.0が登場してて阿鼻叫喚になってると予想してみる

731 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 19:02:17 ]
メジャーバージョンアップ=仕様の確定=完全な互換性の断ち切り

732 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 19:06:18 ]
phobos vs tango
d1.0 vs d2.0
で組み合わせが四通りあるから困る
d1.0+phobosで開発してきたが、tangoのFiber使いたい俺としては
せめてphobosとtangoが共存してくれれば...

733 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 19:12:06 ]
codepad.org/biiWqnSH
FizzBuzz書いてみたいがtoStringってコンパイル時に動かないんだな

734 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 20:00:40 ]
>>733
っ std.metastrings

735 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 20:07:07 ]
DだとFizzBuzzを最小何文字で作れるんかな
ちなみに俺は140文字だった

736 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 20:18:48 ]
>>735
www.shinh.org/p.rb?FizzBuzz#D
に83バイトという記録がある。
いったいどんなコードなのやら。

737 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 20:24:29 ]
>>730 それは>>731から本望 QED
>>732 tangoがphobos準拠じゃないのが悪いんだよ
なんで自作ライブラリごときが標準ライブラリと共存できないんだってことだよw



738 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 20:33:21 ]
tangobosは?

739 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 20:40:02 ]
>>737
tangoはGCや配列キャストなどの言語の基幹部分も独自に持っていて、
phobosを置き換えるのが目的で作られてるから、共存できなくて当然。

740 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 21:39:01 ]
>>736
切り詰めて87文字
しかも数字が表示できない、中括弧使うと文字増えるしなぁー
import std.stdio;void main(){int i;while(i++<100)writef(i%3?"":"Fizz",i%3?"":"Buzz");}

741 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 21:44:04 ]
>>740
printf使えばもっと短くできるんじゃない?

742 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 21:55:04 ]
>>739
じゃあphobosが言語の基幹とライブラリの機能分担に失敗してる?

743 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 22:21:54 ]
>>741
これで99文字
void main(){for(int i;i++<100;)printf("%.*s%d",(i%3?"":"Fizz")~(i%5?"":"Buzz"),!(i%3&&i%5)?0:(i));}
こっちが別案(100文字ジャスト)
void main(){int i;char[]s;while(i++<100)printf("%.*s%d",s=(i%3?"":"Fizz")~(i%5?"":"Buzz"),s?0:(i));}

どっちもゴミが入るし83文字なんて…

744 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 23:16:42 ]
>>732
D言語研究室にファイバあった。
前に試したけど、ファイバの部分だけならコンパイル通るようにするのはそれほど難しくない。

745 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 01:40:53 ]
d で windows アプリケーションを作るときに XP のビジュアルスタイルを当てる方法をおしえてください

746 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 02:13:17 ]
マニフェスト作ればいいんじゃないの。
詳しくしらんが。

747 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 02:26:09 ]
%03dとかやれる関数ってないっすか。



748 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 02:35:44 ]
std.string.format

749 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 03:12:25 ]
std.c.stdio.sprintfでおk

750 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 03:53:45 ]
tangobos で tango と phobos を同時に使うと、無駄に富豪的な気分がするぜ

751 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 08:10:02 ]
tangoではないんでしょうか。

char[] format(char[] format, ...)
{
Sprint!(char) sp = new Sprint!(char);
return sp.format(format, _arguments, _argptr);
}
とかやっても%がそのまま出力されちゃうんですが。

752 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 08:34:12 ]
>>751
tangoのフォーマットはC#と同じなのでそのようにやると良い。

753 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 10:31:52 ]
>>750
同時につかえるやつなんだ!しらんかった
両ライブラリの最新に対応してるのかなぁ
てかObjectクラスが違うはずなのに大丈夫なのかな

754 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:25:00 ]
tangoの方のオブジェクトが使われるはず。

問題が出たとしても、そういうことの解決をやるのがtangobosっていう擦り合わせのプロジェクトですよ。

755 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:43:00 ]
やっぱ、tangobosって方向性として間違ってるよなw

756 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 14:09:00 ]
>>745
main.exeが実行ファイルだとしたら、以下の内容をmain.exe.manifestとして保存して実行ファイルと同じフォルダに入れておけば、どんな言語で作ってもXPビジュアルスタイルになる。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
name="main"
processorArchitecture="x86"
version="1.0.0.0"
type="win32"/>
<description>main</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>


757 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 15:07:12 ]
>>752
そうだったんですか。
ありがとうございました。



758 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 21:04:15 ]
こんなところ見つけた。
www5.atwiki.jp/yaruhara/pages/74.html


759 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 23:56:39 ]
>>758
かなり気合入ってるな

760 名前:デフォルトの名無しさん [2008/07/15(火) 05:11:03 ]
ディレクトリ系の例外拾うと、システムの日本語が入ってるせいか文字化けするんですが、
誰か治し方しりませんか。

761 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 07:04:24 ]
連投ですいません。
auto http = new HttpClient( HttpClient.Get, "localhost/test.jpg" );
http.open();
HogeClass _this = this;
DataOutput stream = new DataOutput(new FileOutput( this.current.toString()~"hoge.jpg" ));
if( http.isResponseOK )
{
int len = http.getResponseHeaders.getInt( HttpHeader.ContentLength, int.max );

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

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

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

何が駄目なんでしょうか?

762 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 07:24:41 ]
dataをdupしたら解決しそうな気がする

763 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 07:36:56 ]
だめですた・・・・・

764 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 07:46:32 ]
voidはどうすればキャストとかできるんでしょうか。
中身をのぞいてみようと思ったんですが、何にもキャストができません。
あと、
無名関数内の引数dataのlengthは1716でlenは4323でした。

765 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 10:28:28 ]
Voidはキャスト可能でした><

766 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 11:03:14 ]
>>760
再現コード

767 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 13:02:20 ]
>>764
無名関数が複数回呼ばれることを理解してない、ということかな?
無名関数内の引数dataは実際のデータが小分けになっている。
複数回呼ばれたときのdataを全部連結すると、お望みのデータになるよ。



768 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 01:25:29 ]
>>767
おおおおう。
できました。


ありがとうございました。

769 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 05:35:23 ]
FizzBuzz書いてみた
codepad.org/zAwWfbs7

codepadはmetastrings使えないんだな
tangobos使ってるみたいだがバージョンが古いんだろうか

770 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 11:58:19 ]
>769
std.string.toString() 使えば、toStr 要らなくね?

771 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:12:32 ]
おこられたcodepad.org/jHEx9kA5

772 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 15:20:06 ]
配列の末端から取り出すのって皆さんどうやってますか?

773 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 15:45:37 ]
リバースして、ふぉーいーちにかけるか、ふぉーで配列の要素数-1から逆順でとる。
それ以外ってあるかなぁ。

774 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 15:52:21 ]
foreach_reverseがあるのに,なんでわざわざreverseするのん?

775 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 22:21:55 ]
/home/d/dsss/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../libDG-tango-io.a(tango.io.Conduit.o): In function `_D5tango2io7Conduit7Conduit5errorMFAaZv':
Conduit.d:(.text+0x134): undefined reference to `_D5tango4core9Exception11IOException7__ClassZ'
Conduit.d:(.text+0x151): undefined reference to `_D5tango4core9Exception11IOException5_ctorMFAaZC5tango4core9Exception11IOException'
/home/d/dsss/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../libDG-tango-io.a(tango.io.Buffer.o): In function `_D5tango2io6Buffer6Buffer5errorMFAaZv':
Buffer.d:(.text+0x1580): undefined reference to `_D5tango4core9Exception11IOException7__ClassZ'
Buffer.d:(.text+0x159d): undefined reference to `_D5tango4core9Exception11IOException5_ctorMFAaZC5tango4core9Exception11IOException'
collect2: ld はステータス 1 で終了しました
Command /home/d/dsss/bin/rebuild returned with code 65280, aborting.
Error: Command failed, aborting.

これはいったい何をぐぐったらわかるんでしょうか。

776 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:48:33 ]
>>775
ldの引数で、-lDG-tango-ioの右側に-lDG-tango-coreが書いてない、ということだな、そのエラーメッセージは。
ldはライブラリの依存関係に沿って引数を書かないとリンクエラーになる。

777 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 09:24:16 ]
>>773
うそだろ
v[$-1]じゃねーの!?



778 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 10:09:25 ]
>>777
おまえは何を言っているんだ。

779 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 10:43:50 ]
>>778
777じゃないが俺が代弁しよう。きっとこういいたかったに違いない。
while (v.length)
{
func(v[$-1]);
v.length = v.length-1;
}

780 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 11:24:50 ]
>>779
お前凄いな。

781 名前:777 mailto:sage [2008/07/18(金) 13:13:09 ]
>>778
ごめん、末端から「順に」取り出すのね。
勘違いしてました

>>779
エスパーすぐる!
フォローまでしていただいて・・・

782 名前:773 mailto:sage [2008/07/18(金) 16:54:03 ]
foreach_reverseって実装されてたのか。
ROMってるだけだと疎くなっちゃうね。正直すまんかった。

783 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 18:38:34 ]
かなり昔からある気がするが…

784 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 20:09:01 ]
>>776
使ってるのはdsssなんですが、直すにはどの辺り調べるといいんでしょうか

785 名前:776 mailto:sage [2008/07/19(土) 00:21:44 ]
>>784
dsssは使ってないから、正確なところはわからない。
もし、読み込んでいるdsss.confにbuildflags=-llDG-tango-core -llDG-tango-io ... のような記述があるなら、書いてあるライブラリの順番が問題なので、それを依存関係に沿って(左のライブラリが右のに依存するように)並び替えればよいのだけど……。


786 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 22:25:32 ]
Cと比べてどっちが速いの?

787 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 22:40:32 ]
>>786
・両方ネイティブコード吐くし、どっちがあらゆる面で速いとは言えない。
・メモリ周りはGCある言語のほうが現実的に速くなるよ、と公式では主張されている
・コンパイル速度はDのほうが遙かに速い
・VC++なんかの商用コンパイラのほうが最適化は賢い(んじゃね?
・最適化部は同じだろうし、dmdならdmcと、gdcならgccと同じようなパフォーマンスになる(んじゃね?

下二つは適当。



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

Dは本質的にかなり速度が出そうな言語ではある
コンパイラ屋が再設計したC++みたいなもんだから

789 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 23:24:50 ]
>>786
向き不向きがあるけど、開発速度はDのほうが圧倒的に早い…
という比較があった気がした。
ある課題をいろんな言語で解くコンテストがあって、それでDがGCと契約のおかげでいい成績出したって内容だった気がする

790 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 02:07:08 ]
実行速度はライブラリの差が大きいだろうな
複雑な数値計算とかなると、もう

791 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 16:41:09 ]
>>789
C++でどうしても生産性があげれなかったヘタレな俺
現状どうみても D>>C++ です。 本当にありがとうございます。

792 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 11:41:00 ]
IDE欲しくてDescentに挑戦したけど、どうにもコンパイルできなかった。
143あたりの手順も試してみたけどダメだった。結局makeに逆戻りしちゃった。
なんか導入しやすいIDEないかな?2.0系使えるやつ

793 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 14:32:18 ]
Poseidon

794 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 19:35:25 ]
gdc(mingw)0.24でgc_initを呼ぶと即座に落ちる。
_minitもundefinedと言われるし・・・

Win32 のサンプルが動かないとか心が折れそう。

795 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 23:59:48 ]
>>794
WinMainを使わずにmainを使えばいい。
インスタンスハンドルが欲しければGetModuleHandleで得られるし。

796 名前:794 mailto:sage [2008/07/22(火) 00:15:22 ]
>>795
本当はDLLを作りたいんだけど、DllMainのgc_initでこけてたので、
前段階としてWinMainで実験してみて、うまくいってないという話。
DLL以外ならmainでいいんだけどね。
紛らわしくてスマソ。

797 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 13:08:40 ]
うぉるたんインタヴュー
www.techworld.com.au/article/253741/a-z_programming_languages_d




798 名前:デフォルトの名無しさん mailto:sage [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.

らしいですよ。

799 名前:794 mailto:sage [2008/07/22(火) 20:06:30 ]
自己解決。
スレ汚し失礼しました。

800 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 21:18:13 ]
自己解決したらちゃんと解決方法も書きなさい

801 名前:794 mailto:sage [2008/07/22(火) 21:21:15 ]
www.digitalmars.com/d/archives/D/gnu/creating_static_dynamic_lib_minit_remains_unresolved_2367.html

DigitalMarsで検索してたら普通にあった。

802 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 18:22:54 ]
www.vimeo.com/1364875
www.n-brain.net/
これ使ったことある人いるかな

803 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 18:26:45 ]
うお、まだ配布されてなかった
すまn

804 名前:デフォルトの名無しさん [2008/07/23(水) 19:58:27 ]
>>797
そういえばウォルタンの顔を見たことがなかったという衝撃

805 名前:デフォルトの名無しさん [2008/07/23(水) 21:59:17 ]
髭がないのがD言語普及の妨げになってるんだよな。

806 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 22:06:10 ]
懐かしいな
slashdot.jp/article.pl?sid=08/04/30/0830201

807 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 22:13:17 ]
やはりここはウォルたんにも髭を・・・・・



808 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 22:14:59 ]
>>806
ハゲである必要はないんか?

809 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 22:16:45 ]
ハゲると言語仕様が複雑に・・

810 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 22:19:03 ]
ウォルたんの頭髪大ピンチ!

811 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 06:13:13 ]
髭を剃ることを暗に明に強制されるような環境で、
好きに言語を設計するような仕事はできないという点では明察なんだよな。
その意味でウォルたんは好きに言語を設計してると思うから問題ない

812 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 06:36:53 ]
いくらなんでもこじつけだろと思ったが三行目で吹いた。
確かに好きに設計してるなwwww

813 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 09:34:07 ]
をるたん・ぶらいと

814 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 10:55:23 ]
うぉるたんって60才ぐらい?

815 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 12:46:45 ]
永遠の17歳

816 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 15:21:05 ]
>814
www.walterbright.com/ によると
「1979年にカリフォルニア工科大を卒業した」そうだから、
50代前半じゃね?


817 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 15:21:06 ]
caltechを1979に卒業と書いてあるので、
だいたい50〜55くらいの範囲だな



818 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 18:31:20 ]
仲いいなお前らwww

819 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 18:35:16 ]
この一連の流れを/.本家へ投稿してみたいところだな

820 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 22:48:31 ]
>>819 やめろww

821 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 00:00:46 ]
バージョンアップがこなさすぎる…
最後にリリースされたのいつだよ…

822 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 00:24:30 ]
一連の流れから分かったこと
・D言語に足りないのは髭

823 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 01:17:17 ]
じゃあ今度からD言語ではhogeの代わりにhigeを使えばいい、というわけか。

module walter.hige;
int hige(){ return 0; }

824 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 01:22:24 ]
じゃあDのマスコットキャラに髭つけようぜ

825 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 01:36:39 ]
かっけーじゃん

826 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 01:38:17 ]
髭の長さ=Dのバージョン

827 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 02:59:06 ]
Visual studio並のIDE欲しい・・・



828 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 03:46:48 ]
IDEがあればD言語かつる
っていうか今や普及にIDEは必須だぜ・・・

829 名前:デフォルトの名無しさん mailto:sage [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

830 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 09:45:47 ]
struct type
{
  typeof(this) opAssign(type other)
  {
    return this;
  }
}

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

  return 0;
}

何でエラーになるの?教えてエロい人!

831 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 12:03:32 ]
=演算子が関数呼び出しにハイジャックされてるからじゃねーの?

832 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 12:34:35 ]
>>821 この間2.017がでたところじゃないか

833 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 12:42:40 ]
VSのプラグインみたいなのでどこまでできるの?
前にインテリセンスをがんばってた人がいたけれど.

834 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 13:30:31 ]
IDEなんて不要。何の役にも立たない。
そんなのにリソース割かれてコンパイラの完成遅れられたら困る。

835 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 13:38:59 ]
完成・・・だと・・・ッ!?

836 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 13:54:21 ]
>>830
 map["name"] = hoge;

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

map["name"]でエラー

837 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 16:20:50 ]
>>835 そもそも完成なんて概念は存在しないというのは言ってはいけないのかもしれんが言っちゃった



838 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 17:31:44 ]
>>834
別にウォルたんに作れとは言わんw

839 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 18:49:49 ]
>>835
>>797より
>Do you still consider D to be a language "under development"?
>  A language that is not under development is a language that is not being used.
>  D is under development, and will stay that way as long as people use it.
>  C++, Java, Python, PERL, etc., are also widely used and are still under development.
「IDE? もうあるじゃん」的な発言からも分かるように、なんとなく、
うぉるタンにはDをみんなに広めてやろうっていう野心が足りないんだな。

840 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 18:54:57 ]
生粋の技術屋なんだな

841 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 19:15:06 ]
うぉるたんには髭の生えた参謀役が必要なんだな

842 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 22:14:45 ]
Tango 0.99.7 Dominik released

843 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 00:18:53 ]
Dらしいboost::tupleを作ったはいいけど、コード補完のメンバ一覧が出たとたんIDEが落ちるw

844 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 00:27:03 ]
このスレよりもD言語について盛んに議論されてる場所ってある?
少なくともうぉるたんについてはこのスレが一番だと思うが。

845 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 02:08:44 ]
日本にはないと思う

846 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 02:25:29 ]
D1.028 phobos の std.cover の setDestDir(char[]) 関数なんだけど、

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

になってるんだけど、

 dstpath = pathname;

だとおもうんだ。
みんなの環境はどう?

847 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 03:09:49 ]
>846
2.017のPhobosでも同様になってる。
よく見つけた。Bugzillaへ行っとけ!



848 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 12:36:58 ]
>847
アカウント無いし、作りたくないから頼んだ。

dstpath を修正しても何の効果もないからなんとかしろーってのもいっといてplz

849 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 13:08:04 ]
めんどくさ
std.coverなんて使ってないしどうでもいい

850 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 20:00:08 ]
ながれにWWWW

851 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 22:46:01 ]
最近、D言語を勉強しようかなーと悩んでるんだが
D言語ラブな人にD言語の魅力を語ってほしい

ちなみに今までは、基本的にスクリプト言語(Ruby)でいろいろやってました
C言語は大学の演習のみ、C++やC#は未経験

852 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 23:57:33 ]
>>851
Rubyで間に合ってたならそっち使ってた方がいいと思う
D言語の凄まじさはC++をある程度やってないとわかりにくいんじゃないかな?

API叩きたいとかでも色々ポーティングしなきゃならない状況だからね〜


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

でも個人的に最大の魅力は更新待ちのwktk感。
既存のコード通らなくなる変更躊躇わないからなうぉるたん。標準ライブラリが壊れたりするんだぜ?
(ちなみに当方ややM)(でもこのスレに仲間は多いと思ってる)

854 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 00:31:44 ]
Ruby使いこなせてるなら、Rubyで十分。
スクリプト言語以外をそんなに触ってないなら、静的型付けとかの不自由さを感じるかも。

Dの良いところはスクリプト言語でもないのに、いろんな機能を使えるところ。他の言語に比べて多機能だと思う。


855 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 00:38:15 ]
>>851
俺の場合、WindowsとLinuxの両方で使うというのがあったから、Dという選択になった。

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

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

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

Dの欠点は標準ライブラリが信用できないこと。
標準ライブラリを自力で何とかできないとDを扱うのは難しい。


856 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 00:41:46 ]
>>853
> でも個人的に最大の魅力は更新待ちのwktk感。

ナカーマ

857 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 00:47:04 ]
通らなくなったコードを逐一直してまったくもううぉるたんたらおちゃめなんだからぁ的なアレ



858 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 00:53:39 ]
仕事仲間には絶対したくないけどねっ

859 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 01:12:52 ]
参照型をサポートする
タプルを関数から返せるようにする
opCastをまともにする

うぉるたん頼むからこのへん実装してくれ><

860 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 01:57:43 ]
>>859 参照型ってなんぞ

861 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 02:00:40 ]
int& a;

みたいなやつじゃね

862 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 02:17:44 ]
<俺:妄想>

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

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

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

</俺:妄想>

863 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 02:18:38 ]
htodをもう少しどうにかしてほしいな。
手直し箇所が多すぎて、気軽にCのライブラリを使いたいと思えない。

864 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 04:31:45 ]
Tangoユーザの方0.99.7はどうよ?

865 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 04:36:28 ]
>>848-849
ttp://f17.aaa.livedoor.jp/~labamba/?BugTrack
とりあえず張っておくからw

866 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 05:14:19 ]
>865
まかせた

867 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 06:19:14 ]
>>864
とりあえずなんかMemory.diでエラーが出る。
ちょっとソースのぞいてみたらなんか明らかにおかしいところがあった

130: enum BlkAttr; : uint
131: {



868 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 08:29:18 ]
まったくDの開発陣は・・・テスト自動化しろよな
せっかく言語がunittestとかDbCとか用意してるのに全然活用してないじゃん
うぉるたんがたまにテスト通さないのは破壊的な変更しまくるからだろうけど

869 名前:851 mailto:sage [2008/07/27(日) 12:55:38 ]
いろいろな意見ありがとうございます
とりあえず、更新を待ってwktkする言語だというのは伝わってきた
面白そうなので少し触ってみようと思います

870 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 15:43:10 ]
もし、うぉるたんが死んだり、引退したりしたら、Dも終わるのか?
うぉるたんの跡を継ごうっていう人は出てくるのだろうか。

871 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 15:46:19 ]
きっとD++がでるよ。

872 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 16:18:50 ]
>>868
激しく同意。単体テスト用意しれと思うなぁ。
復帰テストはしているようだけど膨大だからかなりの時間かかってそうだし。

873 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 16:23:25 ]
単体テスト以前にコンパイルしてないんじゃ…

874 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 19:26:32 ]
>>862
それは
static int a;や
int* a;と似たような宣言で
ref int b; がスマートな気がする

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

ポインタを使わないようにした代わりにこれがあればポインタの代用がかなり効きそうだな
GC周りに矛盾が生じないなら入れてほしいな

875 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 19:45:10 ]
>>874
 int* a;
はどっちかっていうと、
 const int a; // constは変数を修飾
よりは
 const(int) a; // constは型を修飾
に近いんじゃない?

それで、refは変数の情報な気がするから、ref(T)はいらないと思う。

876 名前:デフォルトの名無しさん [2008/07/27(日) 19:58:19 ]
dmd2.017 + dsource.org->Win32api Bindings
で、ウィンドウプロシジャの中から例外を投げて、
main関数に書いたcatchで拾おうとすると失敗するんだけど、こういうもんだっけ?

877 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 20:03:18 ]
>>876
そういうもん。

コードの流れは、
メッセージループ -> | user32 | -> ウィンドウプロシージャ
なんで、例外は戻ってこれない。



878 名前:876 [2008/07/27(日) 20:17:30 ]
>>877
即レス感謝。
前いけてた気がしたのは漏れの気のせいでした。
べんきょんなったす。

879 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 20:55:11 ]
えぇぇ、メッセージループの外のcatchで例外とれてるんだけどこれは何?

880 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 20:56:21 ]
writeflnとかで自動的にtoString()が呼び出されると、メンバのアドレスが変っちゃうんだけどなぜ?
明示的に呼び出せば、そんなことにはならなかった
アラインメントの問題?GCの問題?

881 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 21:01:53 ]
>>880
コード付きで頼む

882 名前:880 mailto:sage [2008/07/27(日) 21:34:07 ]
値渡しされてるだけだったorz 正直すまんかった

>>881
ちなみに双方向リンクリスト、つまりSTLのlistみたいなやつ

883 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 22:46:18 ]
Dの頭のままC#でdelegate使おうとしたら
いちいち宣言しなきゃいけないって面倒だなとおもた

884 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 22:49:31 ]
>>883
ラムダ式でおk

885 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 23:03:16 ]
C#3.0からFunc<,>とか使えるんじゃなかったっけ。

886 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 00:33:49 ]
GTK On Dって名前にすれば GOD ってライブラリ名にできるのにそういう風にしないのは
やはり向こうは日本と神の感覚が違うから気軽に使えないのかな

887 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 00:57:59 ]
こういう場合onっていう言い方は正しいのか?
あんまり聞かない気がする。



888 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 01:01:34 ]
じゃ featuring だ

889 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 01:04:05 ]
overとか

890 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 01:08:01 ]
ならopponだ
… oppon 〜は「…を〜と組み合わせて」という意味になる今作った単語

891 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 01:14:40 ]
oppai
なんでもできる証拠なの〜

892 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 01:28:19 ]
GTK of D

893 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 02:01:32 ]
Tango の 0.99.7 でバックスラッシュを含んだパスが蹴られるようになったけど、さすがに面倒だぜ。
import tango.io.Console;
import tango.io.FileSystem;
import Path = tango.io.Path;
void main(char[][] args) {
  auto dir = Path.parse(FileSystem.toAbsolute(Path.standard(args[0]))).path;
  Cout(dir).newline;
}
自分の実行ファイルのディレクトリのフルパスが欲しいとき、もうちょと短く書けないかな。

894 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 05:11:20 ]
www.digitalmars.com/d/archives/digitalmars/D/dwt/
dwtのはずなのにアナウンス
中身はちゃんと別みたいだけど

895 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 16:00:33 ]
std.openrjって、どうしてあるの?誰が使ってるの?
というか、動かないんだけど

896 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 16:15:14 ]
もうなくなるor/andなくなったんじゃなかったのか

897 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 17:49:37 ]
>893
記述が長ったらしい代わりにバイナリが小さくなるのがTangoの芸風でしょ。
ちなみにPhobosなら import path; して dirname(rel2abs(args[0])) だ。




898 名前:デフォルトの名無しさん mailto:sage [2008/07/28(月) 23:53:45 ]
1.0 と 2.0 の違いって何?

C# の 1.0 と 2.0 ぐらいちがったりするの?

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

このスレを読む限りMは2を使った方がいいらしいぞ

900 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:10:10 ]
最近はライブラリも2に対応してるし、1を使う理由ってあんまない気がするなあ。
安定性求めるなら他の言語を当たったほうがいいだろうし。

901 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:20:34 ]
DMDScriptが使いたいだけで1使ってます

902 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 00:26:29 ]
変更点そのものは、
www.kmonos.net/alang/d/2.0/features2.html
に出てる。

903 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 02:02:27 ]
>>900
喧嘩売られてるような気がするのは俺の気のせいだろうな
移行しない理由が聞きたいんだよな

904 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 02:04:10 ]
何が言いたいのかさっぱり理解できない

905 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 02:12:21 ]
gdc(mingw)をうまくビルドできるならば
2.0に乗り換えてみたいところだがね。
エラーが回避できなくてあきらめた。

906 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 07:38:52 ]
>>903
どう考えても気のせいです

907 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 07:39:36 ]
>>902
popenだけはdmd1にも入れてほしい



908 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 09:38:02 ]
ところでお前ら typeof(*this)って使ってるかな?
クラス名とどっちがいい?

909 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 11:51:29 ]
ジェネリックコードじゃなければクラス名の方がいい
時期尚早な過最適化は悪 by Effective C++ ?

910 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 11:57:08 ]
TangoやDWTが1にしか対応してないから2使えない、って人もいるんじゃね。

>909
"premature optimization is the root of all evil." なら、出典はKnuth様 (1974年)。


911 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 12:46:20 ]
先進的な変更で言語がよくなってそれと同時に自分のコードがかっこよくなる
この喜びが毎月のように得られるのはDくらい
それが私がDを使う理由・・・信じて

912 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 14:28:09 ]
static foreachまだなのかなあ。
そんな複雑な変更でもない気がするんだけど、
うぉるたんは他にやりたいことあるんだろうか。

913 名前:デフォルトの名無しさん mailto:sage [2008/07/29(火) 16:13:48 ]
DMDってテンプレート再帰でタプル作るとホントすごいメモリ喰うな…

914 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 00:59:01 ]
D言語はアセンブリの夢を見るか

915 名前:デフォルトの名無しさん mailto:sage [2008/07/30(水) 22:25:38 ]
gc切って、delegateぶん回したらすんごいメモリをくう・・・
あたりまえかもしれんが、scopeとかで回避できんから
すんごい困った


916 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 00:26:38 ]
www.dsource.org/projects/blaze

これのDemoすごいなあ

917 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 00:42:39 ]
あ、これ俺も遊んだwww
結構楽しいんだよなこれ



918 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 01:49:17 ]
PC初期に近いの面白さだよね。

919 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 02:24:57 ]
俺の1時間を奪う憎い奴だ

920 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 08:26:23 ]
template Hoge(){
if(true){}
}
void f(){
mixin Hoge!()
}
なんでif使えないの〜泣

921 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 08:34:29 ]
>>920
つ static if

922 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 11:35:46 ]
template mixin は宣言しか書けないのね

923 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 12:43:23 ]
Lisper
C++er


Der
なんちゃって、えへへ

924 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 13:02:18 ]
>923
PythonistaにならってDistaはどう?
すくなくとも発音はしやすいよw


925 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 13:41:25 ]
typeof(*this) opDot()
{
    return *this;
}


926 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 14:36:01 ]
痔主多?
やDなぁそんなの

927 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 15:33:24 ]
D Langer



928 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 16:08:02 ]
グローバル変数をスレッド間で共有できないのをディフォルトにしよう、
という案を検討してるらしい。
bartoszmilewski.wordpress.com/2008/07/30/sharing-in-d/

これだと現行のコーディングとはスタイルが随分かわっちゃうけど、
マルチスレッドの安全性を考えたら良い案だと思う。


929 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 17:00:35 ]
>>924
Dildo
発音しやすいよ

930 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 17:12:17 ]
1Der

2Der

931 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 17:17:02 ]
3ダー!!

932 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 17:32:21 ]
猪木?

933 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 18:00:29 ]
>>928
むしろグローバル変数いらなくね?
あと例えばプロパティはsynchronized付きになるとか(俺には善し悪しがよくわからんけど)
これからのマルチコアの世界に向けて最適化していった方がいいのかも

934 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 18:17:45 ]
locklessがもてはやされる時代に標準でsynchronized付きとか狂気の沙汰としか。

935 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 18:33:27 ]
そういうもんか
マルチスレッドプログラミングの安全性ももっとコンパイル時に保証できないのかな

936 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 22:24:48 ]
各スレッドが触る変数を確定できるかどうかが勝負という感じかなあ。
pureなら触る変数はプロシージャからのスタックの積み方で決まるから、
そのへんはもう少し楽になる気がする

937 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 00:14:52 ]
Martianじゃないか?いろんな意味で。



938 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 00:24:55 ]
static typeof(this) opCall(T...)(T args)
{
    return new typeof(this)(args);
}
newすら書くのが面倒。そんなあなたに

939 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 00:26:02 ]
pure判定が通るなら原則として大丈夫だと思う。副作用がないということだし。
もうすこし緩めるとスレッドローカル変数しか触らなければ安全だと思うが、これは未実装。

940 名前:924=928 mailto:sage [2008/08/01(金) 01:51:55 ]
>937
ああ、そっちの方が全然いいですね。

ところでGtkDのRC1が8月1日リリース予定なわけだがwktk


941 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 15:00:45 ]
こうか
template Constructor{
>>938
}
class A{
mixin Constructor;
}
void main(){ A x = A(); }
そういえばstructとclassをコンパチブルにできるのかなー

942 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 18:37:17 ]
構造体のコンストラクタってまだないの?

943 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 19:04:45 ]
>>942
ずっと無いと思うよ?
「構造体はPODであるべき」って頑なになってるから。

static opCallで代用するしかないんじゃね

944 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 19:20:33 ]
バグかなバグかな?

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

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


$ dmd main.d func.d
__LINE__
Internal error: e2ir.c 612

945 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 19:22:41 ]
いけね、ファイルを分けなくても再現した。

void line(uint lineNum = __LINE__){}
void main(){ line(); }

946 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 22:10:27 ]
2007年のカンファレンスで構造体にコンストラクタつけるとかなんとか言ってなかったか?
俺の記憶違いかな?

947 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 23:16:19 ]
リテラルあるしなあ……。



948 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 01:59:50 ]
gdcのsvnで手に入る一番新しいやつ。

std/c/windows/com.d

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

ではなくて、

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

が正しいような気がする。
後者じゃないとビルドできないし。

949 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 14:25:36 ]
>>948
んなばかなあ

950 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 14:35:23 ]
>>948
何で前者でエラーになるのか知らないけど、staticは無いと断言できる。

951 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 14:44:56 ]
大体staticで何をカウントしてるんだ

952 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 23:13:01 ]
comが何なのか良く知らないので、
エラー回避のためにstaticにしたんだが、
やっぱりおかしいのか。

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

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

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

まあ、comプログラミングなんかしないから、
別に通ればなんでもいいのだが。

953 名前:デフォルトの名無しさん [2008/08/03(日) 13:39:36 ]
さっきちょっと思いついたんだけど変数の変更を一時的に禁止する様な機能ある?

const(hoge, fuga)
{
// hoge, fugaは変更禁止
}
// 変更OK


954 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 13:54:21 ]
void main() {
int hage = 42;

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

dirtyすぎる…

955 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 14:06:48 ]
最近ここで晒されるソースを見ても何がなんだかです。

956 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 14:17:12 ]
>>953
pureとか予約語になってるんだし,要望したら入れてくれるんじゃね?

957 名前:953 [2008/08/03(日) 14:41:00 ]
>>954
バグ回避目的なのに手段が真逆に向かっている様なw



958 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 15:09:29 ]
なんか、バグが云々って言ってたので、
よくわかりませんが、つたない英語で投稿してみました。

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

適当なので、怒られてたり、意思が通じてなかったりしたら
すいませーんっと。


959 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 15:14:46 ]
ああ、bugzillaに投稿とかのほうがよかったんだろうなぁとか
思ったけど、いいや。やる気ないので、スマヌです。


960 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 15:16:56 ]
これじゃ、何かいてるかわからないな。
>846
>847
>848

ここらへんの話です。
暑くて駄目だwww


961 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 16:13:57 ]
一時変数の名前はhigeを使ってください

962 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 16:43:12 ]
>>953
既出みたいなもんだけど関数のconst引数じゃダメなの?
class A{const void pp(){}}
void f(const A a){
a.pp;
}
void main(){
A a = new A;
f(a);
}

963 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 16:45:56 ]
値型でもこう
int i=1;
g(i);
void g(const ref int i){
  i++; // error
}

964 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 16:47:26 ]
sakuraiさんが久しぶりにDの話題してるの見たw






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<200KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef