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


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

D言語 Part16



1 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 23:00:35 ]
プログラミング言語 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フロントエンド)
ttp://gdcmac.sourceforge.net/ (GDCのmac用バイナリ)

■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
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の入門講座)

40 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 19:26:28 ]
>ってやるとコンパイルは通るが実行時にtest.fugaって表示される。

?

41 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 19:29:06 ]
>>38
根本的に間違ってるよ。

import std.stdio, std.conv;
interface I { }
class C : I { }

void main(string[] args) {
C c = new C;
I i = c;
writeln(cast(void*)c);
writeln(cast(void*)i);

C[] cc = [c];
I[] ii = cast(I[])cc;
writeln(cast(void*)cc[0]);
writeln(cast(void*)ii[0]);

ii = to!(I[])(cc);
writeln(cast(void*)ii[0]);
}

42 名前:41 mailto:sage [2007/11/23(金) 19:35:10 ]
要するに配列のcast()はC++でいうところのreinterpret_cast相当

43 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 19:47:59 ]
サンクス!!!!!!!!!!!!!!!!1111

渡すときにto使ったら実行時エラー消えた!!!!111

マジでありがとう!!!!

44 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 21:02:38 ]
なるほど、オブジェクトの配列は1要素ずつキャストしないといけないのね。

45 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 21:32:11 ]
別にオブジェクトに限らないよ。
例えば、int[]をbyte[]にキャストしたら要素数4倍になる。

void main() {
auto a = [1,2];
writeln(a.length);
writeln((cast(byte[])a).length);
}

46 名前:44 mailto:sage [2007/11/23(金) 23:24:38 ]
>>45
基本データ型や構造体の配列については、C言語でのポインタの扱いと同じなので理解できてます。

47 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:48:54 ]
Python で eclipse + PyDev とか
wxPython とか py2exe とか
色々浮気してみたら
D より Python が好きになってしまった

とりあえず D はしばらく忘れることにします
ごめんなさい

何年後かにはまた皆様にお会い出来ることを
期待してもよいのでしょうか?


48 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 23:51:54 ]
ノシ

D言語が枯れたころにくるといいよ。
今は黎明期過ぎてexternを駆使しないと実戦投入は辛いだろうし。



49 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 00:17:26 ]
IDEのPoseidon dsource.org/projects/poseidon まだ活動してたんですね。
知らないうちに、入力補助やDdbgにも対応してるみたいです。(以前使ったのは1年以上昔)
 . ドットを入力する際にメンバのリストが表示される。
 メソッド名の後の ( カッコを入力する際、引数の型などが表示される。

10分ほど使って気になった点
 ・既存のソースはPoseidon側で保存しなおさないと、アウトライン表示と入力補助が働かない。
 ・デバッグでブレークポイントを設定する方法がわかりません。(´ω`);

50 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 01:34:07 ]
asm{int 3;}

51 名前:49 mailto:sage [2007/11/24(土) 01:52:48 ]
Ctrlキー押しながら行番号の右側クリックで、ブレークポイントの設定/解除できました。

52 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 02:11:13 ]
>>49
それだけできるようになったのなら
そこそこ使えるのかもしれないなーとおもた

53 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 19:09:07 ]
Cで作ったdllを使う場合ってどうやるんでしょう?
libファイルをimplibで変換したんですが、undefinedが出てしまうんですが。

54 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 19:12:49 ]
マイクロソフトのimplib使ってるならCOFFからOMFに変換する必要がある。

55 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 19:19:07 ]
COMは使えるんだっけ

56 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 19:47:20 ]
つかえるよ

57 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 02:22:46 ]
version (D_Version2) invariant(char)[] X = "ver2";
else char[] X = "ver1";

これがD1でコンパイルできない D_Version2 って意味あるのかな…

58 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 03:12:36 ]
マジかよww



59 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 03:45:10 ]
ここにきてTangoのtoUtf8がtoStringに変更とかすごい今更だがでかい変更だな。
……ちょっとわくわくした。

60 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 06:22:12 ]
コンストラクタの引数ってどうにかタプルで取れないかな

61 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 06:23:03 ]
引数の型リストか。
traitsのParameterTypeTupleにthis渡したくてもどうすればいいかわからん/(^o^)\

62 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 12:51:18 ]
>>60
Class._ctorでおk

63 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 15:23:54 ]
トンクス!
でもthisオーバーロードしてたらどうも動きがうまくない・・・

64 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 16:34:59 ]
>>57
minx(""); でかこむ


65 名前:64 mailto:sage [2007/11/25(日) 16:57:38 ]
あ・・・
mixinだって>をれ

66 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 16:58:33 ]
そういうときこそ、q{}の出番…

って思ったが、v1でq{}つかえねえんだな

67 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 17:43:08 ]
おお
D1とD2の両方に対応できる書き方初めて見た。なるほどね。
それってinvariant()の括弧ありなしもカバーできるの?
今出先なので確認できない

68 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 18:05:39 ]
version(D_Version2) const ClassInvariant = "invariant(){_invariant();}";
else const ClassInvariant = "invariant{_invariant();}";

class C {
private void _invariant(){ assret(false); }
mixin(ClassInvariant);
}



69 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 19:38:49 ]
そうまでコードをわけわかめにしてまで
二つのバージョンに対応する価値はあるのだろうか

70 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 21:32:49 ]
俺なら、モジュールで分けてversionでimportを変えるかな。

71 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:23:32 ]
D2ならCTFEでinvariantをinvariant()に置換してmixinすればいいんじゃね?

72 名前:57 mailto:sage [2007/11/25(日) 22:24:03 ]
>>64,>>70
なるほど…ありがとう。参考にする。
でも、>>69の言うとおりそこまでして分けるくらいならD1対応版とD2対応版の2つを別物として作ったほうがいいような気がするな。
そうなるとやっぱりD_Version2の使いどころがわからん…
そもそもversion(D_Version2)の内容も文法的に正しくないとコンパイルが通らないあたりは問題にならないのかな。

73 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:10:10 ]
v2以前の文法のコンパイラ機能がdmd.exeにまるごと載ってて
versionで切り替わってくれるとかでもない限り、
ほんとに使いどころは無い気がする。
D_Version2ってタダのversion識別子だよね?

74 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 01:15:46 ]
>>73
だよ。
そもそも、V2なってからもかなり変更ある気がするが、気のせいだろうな。うん

75 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:41:32 ]
Version3への布石なことはあきらか。

76 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 02:52:54 ]
DMDって無償で商用に使っていいコンパイラですか?

77 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 04:48:29 ]
2chでライセンス関係の情報訊いて動ける商用って一体…

78 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 05:26:36 ]
license.txt を嫁




79 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 18:49:52 ]
dsssむじい
budが気楽でいい

80 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 21:34:08 ]
>Phobos is now on dsource
(゚д゚)ポカーン

81 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 21:43:36 ]
それよりも2.008まだー

82 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 21:44:52 ]
dmd2.007だとopengl32.libをちゃんと読んでくれないのはどういうことか

dmd2.000だと大丈夫なのに

83 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:10:44 ]
kokoro ga oreta

84 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:21:31 ]
>>80
ttp://dsource.org/projects/phobos
ttp://tinyurl.com/2h4tuj
なんだこれとうとう放棄したのか?w
ユーザがPhobosを開発できるなら文字コード周りを何とか・・・

85 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:22:53 ]
じゃあこれで心置きなくTangoに移れそうだね

86 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 00:53:14 ]
伝説のIDEができるまでにこけそうな勢いだなこりゃ

87 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 00:56:57 ]
ここのみんなで日本語化しちゃおうか

88 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 01:21:29 ]
>>86
>>49



89 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 02:26:37 ]
>>87
やりたいんだがなあ

90 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:03:57 ]
NewsGroup盛り上がってるな
直前の流れは知らないんだがTangoとPhobosを統合するのかな?
「両方のコーディングスタイルの違いはどうするの?」とか言ってるし
あとまだ運用がよくわからないから
「誰が全体の設計の管理を受け持つの?」とか話しているようだ

91 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:37:11 ]
> 「誰が全体の設計の管理を受け持つの?」

今までのTangoの人じゃ駄目なの?

92 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:26:33 ]
TangoってDっぽくないんだよなあ。そこがあまり好きになれない。

93 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:27:48 ]
俺に十分な時間があればもっと素晴らしいライブラリ作って見せるんだが

94 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:03:28 ]
俺も俺も

ニートでやってくれる人いないのかな?

95 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:54:31 ]
>>94
よんだ?
っと冗談はおいといて、スレようにレンタルのWikiでも取る?

96 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:11:20 ]
既にある奴で足りてるだろ。
情報が分散するだけだから何個もいらんよ

97 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:17:58 ]
それもそうか。

98 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:05:29 ]
つまりboostがやってるみたいに新規ライブラリを受け付けて
acceptしたりrejectしたりする機構があればいいのか
はてなスターが積み上がる光景が見えたが
母体が2chじゃ投票制にしたら破綻するかなw



99 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:08:15 ]
>>92
俺はconduitの概念がしっくりこないんだよね
ようはstreamなのか?
だったらstreamでいいだろ条項とか思っちゃって

100 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:43:06 ]
>>98
創始者のカリスマ性によると思う

101 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:36:08 ]
static foreachまだかなあ
それとCTFEでForeachRangeが使えないのを早く直して欲しい

102 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:38:19 ]
>>99
streamというよりstreambufのような感じなんじゃないかな。
streamはstreamで別にあるし…

103 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 13:06:35 ]
Phobosのtrunkが熱すぎる件について
std.functional
std.algorithm
その他もろもろ

104 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 13:39:35 ]
まじかよwww

105 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 13:44:26 ]
>>103
ちょ、これから落としてくるw
2.0専用? 1系列でも使えると嬉しいんだが……。

106 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 13:45:07 ]
Phobosはじまったな

107 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 13:46:43 ]
>>103
見たとこあんまり面白い変更無いような…。

108 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 16:37:13 ]
1.024/2.008



109 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 16:57:50 ]
バグフィックスとphobosの拡張がメインか。

typeof(return)とか実際使う場面なさそうだし

110 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 18:55:22 ]
Assertion failure: 't->deco' on line 608 in file 'mtype.c'

abnormal program termination
コンパイラバグってるな。@2.008

111 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 22:57:41 ]
>>36ってdsss.confあたりから設定できない?
budだと-Xあたり? が似たようなオプションになってるっぽいんだけども。

112 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 01:04:03 ]
なんか今回のバージョンアップ微妙に反応少ないけど
Added const and invariant to IsExpressions
これはなんか嬉しい。
あと、
Added const/invariant structs, classes and interfaces.
これが気になっている。何に使えるんだろう?

113 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 01:07:19 ]
budだと
version(build) pragma(nolink);
でobj作らないようにして
version(build) pragma(lib, "tx.lib");
などとする

114 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 07:34:05 ]
wxDでかすぎwwwwwww
わなDのテストやってみたら3.12MB^q^
これは・・・

115 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 09:12:21 ]
>>112
おれも気になった。
迷走って言葉が頭をよぎった

116 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:27:53 ]
たしか、constメンバってstaticに配置されるんだよな?

117 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:47:51 ]
structとclassでは使い道が思い浮かばんけど、
interfaceなら使いどころもあるんじゃなかろうか。

const interface ICountable { size_t count(); }

みたいな。

118 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:55:18 ]
インターフェースって頭にIつけたほうがいいの?



119 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 18:24:38 ]
MSハンガリアンだよね。頭にIつけるの。
でも、Iつけてる人は多いねえ。

120 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 18:48:41 ]
俺は、インターフェイス名と同名でインターフェイスの標準の実装を
作りたくなることが結構あるから、名前重ならないようにIつけてる。

121 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:04:36 ]
同名のプロパティ作りたいからプライベート変数の尻にアンダースコアつけてるけど、似たようなもんか。

122 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:49:31 ]
俺もそのへんなやみつつハンガリアン的とか尻_とかしてるけど、
一般的になにがいいのかねぇ

123 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:06:51 ]
メンバーならm

124 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:21:16 ]
個人的に@インスタンス変数は好き

125 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:59:55 ]
Dじゃ@は使えないからなぁ。
VC++だと$使えたりする。使わんけど。

126 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:23:22 ]
const変数にコンパイル時に決定されない値を入れられるんだけど、
これって仕様に適ってるの?

const l = readln;

127 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 07:18:24 ]
digital marsのサイトからの引用だけど
int x = 3;
const int *p = &x;
*p = 4; // error, read-only view

const int *q = &x;
int z = *q; // z is set to 3
x = 5; // ok
int y = *q; // y is set to 5

ってなコードがある、仕様だと思う。
Cでもローカルのconst変数宣言時にコンパイル時に決定されない値入れれるし、
その辺の仕様を引き継いでるんじゃない?

128 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 16:24:13 ]
>>127
そっかー
phobos見てても本来ならfinal使うべきところでconstって書いてたりするから仕方ないのかな。



129 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 17:18:10 ]
数カ月おきにやる気を補充した所で細かい仕様が変わってるから困る

130 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:09:58 ]
へ?finalあるのにconstがその仕様なんだw
そのうちreadonlyとかできたりして

131 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:16:20 ]
initonlyマダァ-? (・∀・ )っ/凵⌒☆チンチン

132 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:39:36 ]
constって型がconst型になるfinalだろ?

133 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:49:36 ]
D1.0のconstはコンパイルタイム定数だったよなあ
D2.0のconstはそれプラスreadonlyなのかな?とか漠然と思ったまま放置してた俺
D2.0になってconstがどういう意味なのかがわかりにくくない?

134 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:18:47 ]
>>133
おれもそう思う。>>132の解釈でいいのかな?
あとinvariant型とconst型の使い分けがよくわからん。
関数の引数にconst型を使ったとして、「俺は書き換えない」と宣言しても、その関数を実行しているときに
誰かに書き換えられちゃったら読み込んだりとかした時に予期しないエラー起こさない?マルチスレッドのときとか。
関数の戻り値は「書き換えるな」という意味でconst型でいいような気もするけど。

135 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:30:14 ]
www.kmonos.net/alang/d/const.html
ここ読んでから書き込もうよ。

136 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:40:22 ]
昔はconst変数をコンパイル時定数以外で初期化しようとしたらエラーなってた気がするんだが

137 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:59:27 ]
>>135 を改めて読み直してみたのだが
C++のconstにはコンパイル時定数とreadonlyの2つの意味があって,
C++とD1.0のコンパイル時定数としてのconstはD2.0ではinvariantが請け負って,
C++のreadonlyのconstをD2.0ではconstが請け負うってことかな
/* D2.0
コンパイル時定数 => invariant
readonly => const
*/

138 名前:127 mailto:sage [2007/12/01(土) 01:06:50 ]
>>135
トン
>>126
ごめん、これC++の場合のコードですね、>>127のレスは忘れてください。
そして7時の俺、目を覚ませ。



139 名前:134 mailto:sage [2007/12/01(土) 01:07:51 ]
>>135そこは読んだよ。結構前だけど。
それでなお、具体的にはconst型とinvariant型の引数の使い分けがわからん。
たとえばPhobosのstd.string.splitの引数がconst型じゃないのは何でだ?
その辺の明確な指針がほしい。

140 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 04:59:17 ]
void func(D)(in D dg) {
dg();
}
void main() {
func({printf("test");});
}
//(7): Error: cannot implicitly convert expression (__dgliteral1) of type void delegate() to const void delegate()
あれ?私何か間違えたましたか><
inにconstが入るからダメっぽいんだけどinってこういう使い方じゃないの?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<212KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef