D言語 Part22
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/06/22(月) 01:38:41過去スレ、関連スレは >>2
■前スレ
http://pc12.2ch.net/test/read.cgi/tech/1234363551/
■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)
■コンパイラ
http://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
http://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
http://www.dsource.org/projects/ldc (LDC, バックエンドにLLVM)
■参考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/candcpp2d (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)
0048デフォルトの名無しさん
2009/06/29(月) 00:17:40っ
version(unittest) void main() { }
0049デフォルトの名無しさん
2009/06/29(月) 01:25:33でも、それだとファイルが複数になった時(どこにmain()書いたか?とか)ややこしくならない?
0050デフォルトの名無しさん
2009/06/29(月) 04:23:390051デフォルトの名無しさん
2009/06/29(月) 06:46:45おいィ?
0052デフォルトの名無しさん
2009/06/29(月) 07:00:250053デフォルトの名無しさん
2009/06/29(月) 11:55:49ここの講座見てDFL使おうとしたら、コンパイルエラー。
dfl\internal\com.d(218): Error: no property 'seek' for type 'tango.io.model.IConduit.IConduit.Seek'
dfl\internal\com.d(218): Error: no property 'Anchor' for type 'tango.io.model.IConduit.IConduit.Seek'
dfl\internal\com.d(218): Error: no property 'Begin' for type 'int'
dfl\internal\com.d(218): Error: function expected before (), not 1 of type int
〜〜〜以下省略〜〜〜
入れたのは
tango-0.99.8-bin-win32-dmd.1.041
dsss-0.78-x86-windows
dmc.zipのlibの中身
DFL 0.9.8 zip archive
import\dfl\internal\dlib.d の464行目を
alias tango.io.model.IConduit.IConduit.Seek DSeekStream;
から
alias tango.io.model.IConduit.IOStream DSeekStream;
に書き換えたら、なんとかコンパイル通ったよ。
D言語初心者にハードルたけーよ、DFL。(;´Д`)
0054デフォルトの名無しさん
2009/06/29(月) 12:43:25たぶんDFL 0.9.8がtango 0.99.8に対応してないんだな。
http://wiki.dprogramming.com/Dfl/Snapshots
ここの、スナップショット使ってみたら?tango 0.99.8より後だからもしかしたらできるかもよ
0055デフォルトの名無しさん
2009/06/29(月) 13:55:18Note: Tango is not yet supported in this snapshot, please use the release version and be sure to use the compatible version of DMD.
と書いてあるし、まだみたい。
0056デフォルトの名無しさん
2009/06/29(月) 16:25:51tango使っておいて初心者はないw
phobosならいけね?
0057デフォルトの名無しさん
2009/06/29(月) 20:10:00D1ならイけるんじゃね?
0058デフォルトの名無しさん
2009/06/29(月) 20:17:50---
int a = 5;
assert (a.init == 0); // success
assert (a.init == 5); // fail
なん…だと…?
0059デフォルトの名無しさん
2009/06/29(月) 20:33:540060デフォルトの名無しさん
2009/06/29(月) 20:46:290061デフォルトの名無しさん
2009/06/29(月) 21:48:280062デフォルトの名無しさん
2009/06/29(月) 22:02:53逆。右も左もわからないから普通のライブラリのノリで入れちゃうんだよ
まさか標準ライブラリを置き換えてしかも互換性がないものとは思わない
0063デフォルトの名無しさん
2009/06/29(月) 22:45:23結構昔にそういう仕様になったよ
それのせいで昔のソースをビルドした時大変だった
0064デフォルトの名無しさん
2009/06/29(月) 22:47:57関数の型比較は引数の型だけで判断されるんじゃね?
TypeInfo_Function にも TypeInfo_Delegate にも
引数の情報を格納する場所はないし
0065デフォルトの名無しさん
2009/06/29(月) 22:48:15マジですか
和訳はともかく本家のドキュメント直ってないってなんなの
0066デフォルトの名無しさん
2009/06/29(月) 23:37:430067デフォルトの名無しさん
2009/06/29(月) 23:50:15TangoとPhobosは仲良くなれるように努力している。
将来的にはTangoとPhobosの両方のいいところを選択的に使えるようにする。
TangoはライセンスがPhobosと違うので気軽に取り込めなくて残念。
…てかんじのコメントだったと思うよ。
0068デフォルトの名無しさん
2009/06/30(火) 00:54:57http://dusers.dip.jp/modules/wiki/?Learning%2FThe%20Case%20for%20D
0069デフォルトの名無しさん
2009/06/30(火) 13:59:20俺はD言語の何も理解していなかったようだ
って気分になる
0070デフォルトの名無しさん
2009/06/30(火) 16:45:08ChangeLogとかドキュメントで読んだ気がする……んだけど、どこにも書いてないな……
俺はどこで知ったんだろう……
0071デフォルトの名無しさん
2009/06/30(火) 17:22:09> * The .init property for a variable is now based on its type, not its initializer.
0072デフォルトの名無しさん
2009/06/30(火) 17:22:400073デフォルトの名無しさん
2009/06/30(火) 19:45:47この書き方だと今はそうなってるけど元に戻すつもりがあるってことなんだろうか
どっちにしろもう戻らないだろうけど
0074デフォルトの名無しさん
2009/06/30(火) 20:28:35"〜 is now 〜"は昔と違って今は〜だってニュアンスじゃなかったっけ?
0075デフォルトの名無しさん
2009/06/30(火) 22:15:44>ではDの場合はどうでしょう? もう聞いたことがあるかもしれません - 名前のダジャレがやり過ぎな言語。
>他の言語の専用ニュースグループでときどき話題になり、オフトピックな話題に厳しい人達が怒って止めさせるまで鬱陶しい。
>友人に熱狂的なファンがいる。
>あるいは単に、暇潰しに「この広いインターネットには、Dという名前の言語を作った馬鹿がいるに違いない」
>と検索してみた結果、「ああ、やっぱりいた!」
噴いたwwwww
0076デフォルトの名無しさん
2009/07/01(水) 00:10:00ところどころわかりにくいんだけど面白えw
アレキサンドレスクD好きすぎる。訳の人gjです。
0077デフォルトの名無しさん
2009/07/01(水) 16:19:470078デフォルトの名無しさん
2009/07/01(水) 17:05:37これはおもしろい
0079デフォルトの名無しさん
2009/07/01(水) 18:42:080080デフォルトの名無しさん
2009/07/02(木) 17:24:20bugzillaに報告するといいよ
0081デフォルトの名無しさん
2009/07/03(金) 05:53:570082デフォルトの名無しさん
2009/07/03(金) 13:46:490083デフォルトの名無しさん
2009/07/03(金) 14:07:12int x;
class C {
static ref int f() { return x; }
ref int g() { return x; }
}
void main() {
(&C.f)() = 0; // ok
(&(new C).g)() = 0; // error
}
0084デフォルトの名無しさん
2009/07/03(金) 14:55:240085デフォルトの名無しさん
2009/07/03(金) 15:39:530086デフォルトの名無しさん
2009/07/03(金) 15:54:18int k = dg(1);
assert(k == 2);
こうなる予定だったよね?
0087デフォルトの名無しさん
2009/07/03(金) 16:01:000088デフォルトの名無しさん
2009/07/03(金) 16:22:26それなんかきもいな。
バックスラッシュはλの代わりだから前に書きたい。
> auto square = \x => x * 2;
>
> auto i = square(2); // typeof(i) == int
> auto d = square(2.5); // typeof(d) == double
強い静的型付き言語だけど、ソースコード上に型を書かなくていいような言語が使いたい。
0089デフォルトの名無しさん
2009/07/03(金) 16:28:490090デフォルトの名無しさん
2009/07/03(金) 16:31:17OCaml
型推論で80%の型名を書かなくていいネイティブ吐ける関数型言語
0091デフォルトの名無しさん
2009/07/03(金) 16:37:04アセンブラレベルでの呼び出し規約は
デフォルトで何を使ってるんですか?
ちょっと興味があったもので
0092デフォルトの名無しさん
2009/07/03(金) 16:49:30本質的じゃないが、それsquareじゃないだろ
0093デフォルトの名無しさん
2009/07/03(金) 16:51:13http://www.kmonos.net/alang/d/2.0/abi.html
0094デフォルトの名無しさん
2009/07/03(金) 16:56:470095デフォルトの名無しさん
2009/07/03(金) 17:02:29ありがとう
完全に独自なのか
型情報をマングリングしたり
関数側でスタックを処理するのに
可変引数がサポートされたりしてて面白い
0096デフォルトの名無しさん
2009/07/04(土) 13:49:54const(A) a;
}
0097デフォルトの名無しさん
2009/07/04(土) 13:51:41class A {
const(B) b;
void setB(in B b) {
this.b = b; // 駄目
}
}
constな型とconstな変数が区別されてないのってなんでだろ?
このsetAみたいな事やろうとして八方塞りになった
009897
2009/07/04(土) 13:52:28×setA
慌てすぎで死んだ
0099デフォルトの名無しさん
2009/07/04(土) 14:13:250100デフォルトの名無しさん
2009/07/04(土) 14:20:15クラス型が参照型(要するにポインタ)であることを考えれば、別に何もおかしいことではないと思う。
struct S { }
class A {
const(S*) b;
void setB(const S* b) {
this.b = b; // 駄目
}
}
これに対する解決法は>>99だけど、言語のほうで何とかしてほしいのはたしか。
それと、これはまだ実装されてないけど、inはscopeを含むので、
in引数の内容をスコープ外にコピーすることはできない。
0101デフォルトの名無しさん
2009/07/04(土) 14:38:06最近同じポイントではまりました。
>>99 >>100
AとRebindable!(A)はisによる同一性比較が出来ないのが欠点。
なんでDはC++みたいに参照と値を分離しなかったのか…
0102デフォルトの名無しさん
2009/07/04(土) 14:48:59あーなるほど、なるほどなぁ
とりあえずは解決しそうです。ありがとうございました。
解決はするけど、確かにもうちょっとスマートになってほしいな
0103デフォルトの名無しさん
2009/07/04(土) 20:32:310104デフォルトの名無しさん
2009/07/04(土) 21:02:48import std.typecons;
class A{}
void main()
{
Rebindable!(const(A)) a = new A();
// if( !a ){
// if( a is null ){
if( a.opDot is null ){
}
}
Rebindableそのものはstructなので!やis nullで直接調べられない
opDotでconst(A)を取り出さないとダメ
0105デフォルトの名無しさん
2009/07/04(土) 21:28:57そうか、opDotを直接呼べばいいのか
getがprivateだどうすんべとか言って悩んでたthx
0106デフォルトの名無しさん
2009/07/05(日) 00:53:570107デフォルトの名無しさん
2009/07/05(日) 01:15:200108デフォルトの名無しさん
2009/07/05(日) 03:09:280109デフォルトの名無しさん
2009/07/05(日) 08:03:210110デフォルトの名無しさん
2009/07/05(日) 10:47:440111デフォルトの名無しさん
2009/07/05(日) 13:13:440112デフォルトの名無しさん
2009/07/05(日) 15:41:310113デフォルトの名無しさん
2009/07/05(日) 15:41:57ありがとう。でも、最新版のD2でコンパイル通るものはなかった
0114デフォルトの名無しさん
2009/07/05(日) 19:57:03規模が小さいものに手を入れるといいかと
0115デフォルトの名無しさん
2009/07/05(日) 22:29:110116デフォルトの名無しさん
2009/07/05(日) 22:50:490117デフォルトの名無しさん
2009/07/05(日) 23:54:23http://dsource.org/projects/tango/browser/branches/experimental/D2.0
0118デフォルトの名無しさん
2009/07/06(月) 00:11:31branches/experimental/D2.0は何カ月も前からコンパイルできなかったと思うし
0119デフォルトの名無しさん
2009/07/06(月) 14:21:270120デフォルトの名無しさん
2009/07/06(月) 15:42:12___
/ || ̄ ̄|| ∧_∧
|.....||__|| ( ) どうしてこうなった・・・
| ̄ ̄\三⊂/ ̄ ̄ ̄/
| | ( ./ /
___
/ || ̄ ̄|| ∧_∧
|.....||__|| ( ^ω^ ) どうしてこうなった!?
| ̄ ̄\三⊂/ ̄ ̄ ̄/
| | ( ./ /
___ ♪ ∧__,∧.∩
/ || ̄ ̄|| r( ^ω^ )ノ どうしてこうなった!
|.....||__|| └‐、 レ´`ヽ どうしてこうなった!
| ̄ ̄\三 / ̄ ̄ ̄/ノ´` ♪
| | ( ./ /
___ ♪ ∩∧__,∧
/ || ̄ ̄|| _ ヽ( ^ω^ )7 どうしてこうなった!
|.....||__|| /`ヽJ ,‐┘ どうしてこうなった!
| ̄ ̄\三 / ̄ ̄ ̄/ ´`ヽ、_ ノ
| | ( ./ / `) ) ♪
0121デフォルトの名無しさん
2009/07/06(月) 16:10:31んで後ろを含む..=とか、前後の上下をはっきりさせた.<や.<=や.>や.>=を導入すれば良かっただろうに
0122デフォルトの名無しさん
2009/07/06(月) 18:48:480123デフォルトの名無しさん
2009/07/06(月) 19:19:46D 2.031
・ルートを\dmdから\dmd2に
・with文でローカルのシンボルと重複すると隠すのでエラー
・final switch(expr)
・case 1: .. case 5:
・暗黙の整数変換で符号ビットが落ちる変換はエラー
・return exp;がないのは警告じゃなくてエラー
・dmdの吐くエラーはstderrに出すように
・フロントエンド高速化のパッチ
・std.algorithm : swapの高速化、あといくつか追加
・std.array : 関数追加
・std.conv : enum値を表示/解析するコードを追加
・std.ctype : isupperとtolowerをpureに
・std.date : benchmarkの返値をuint[]からulong[]に
・std.demangle : switchとcaseの新文法に対応して変更
・std.random : randomSample追加
・std.string : find系をdeprecatedに。starstWith、endsWithを削除
・std.traits : isSomeChar と isPointer追加
・std.typetuple : indexOfをindexOfTypeに。前の名前はaliasで残してdeprecated
・std.utf : エラーメッセージ改善
0124デフォルトの名無しさん
2009/07/06(月) 19:33:14final switchは「全条件について書く」、defaultなし、CaseRangeなし、enumを受ける場合enum全条件のcase強制、か。
以前に「gotoの行き先のラベルのアドレスが欲しい」という話があったが、
final switchだとほぼ同等のことができるな。defaultがないからほぼO(1)のルーチンに最適化可能のはず。
0125デフォルトの名無しさん
2009/07/06(月) 19:56:04ではいけない理由がわからないんだけど誰か教えて
0126デフォルトの名無しさん
2009/07/06(月) 20:22:45何とかしてよドラえもん
0127デフォルトの名無しさん
2009/07/06(月) 21:52:19case 1 .. 9:
だとスライスの連想から、1<=x<9のような感じがするが、
case 1: .. case 9:
だと、いかにも9を含みそうな感じがする。
という説明がNGでなされている。
0128デフォルトの名無しさん
2009/07/06(月) 21:59:010129デフォルトの名無しさん
2009/07/06(月) 22:06:360130デフォルトの名無しさん
2009/07/06(月) 22:23:56と言うことは、普通の switch 文なら case j: とか…
…できるじゃあないかッ!いつからこんなことが?
0131デフォルトの名無しさん
2009/07/06(月) 22:31:32andreiじゃあしょうがないな
0132デフォルトの名無しさん
2009/07/06(月) 22:33:080133デフォルトの名無しさん
2009/07/06(月) 22:42:54結構前から出来たと想うけど
0134デフォルトの名無しさん
2009/07/06(月) 22:44:55ラベルのアドレスならcaseの中から直接次のcaseへジャンプするように
書けるから同等ではないかと。それでもO(1) switchはかなりうれしいけど。
0135デフォルトの名無しさん
2009/07/06(月) 22:48:06fallthroughなんかgoto caseがあればいいじゃないか…
0136デフォルトの名無しさん
2009/07/06(月) 23:28:401<=x<=9のような感じを出したいならcase 1..=9:とすりゃいいのに
0137デフォルトの名無しさん
2009/07/06(月) 23:33:46C言語だとfall throughは結構使われる…が、確かにD言語だとcaseに複数指定可能でgoto caseがあるから無くした方が良い気もするな。
まぁC言語使いが混乱しないようにfall through禁止の上でbreak必須にするという所が現実的な気がする。
0138デフォルトの名無しさん
2009/07/06(月) 23:37:080139デフォルトの名無しさん
2009/07/06(月) 23:52:29fall throughなしでbreakなしにするんだ
select(n){
case 0, 1, 2:
case 3 .. 5: // 3,4
case 5 ... 7: // 5,6,7
default:
}
0140デフォルトの名無しさん
2009/07/06(月) 23:58:58case is構文の新設ですね、分かります。
0141デフォルトの名無しさん
2009/07/07(火) 00:06:560142デフォルトの名無しさん
2009/07/07(火) 00:18:31ヒント: http://www.geocities.jp/cbc_vbnet/kisuhen/bunki.html#selectbun
0143デフォルトの名無しさん
2009/07/07(火) 02:00:530144デフォルトの名無しさん
2009/07/07(火) 03:10:330145デフォルトの名無しさん
2009/07/07(火) 09:50:47それでいいよ
0146デフォルトの名無しさん
2009/07/07(火) 10:58:260147デフォルトの名無しさん
2009/07/07(火) 11:01:12■ このスレッドは過去ログ倉庫に格納されています