08/04/14 15:16:22
プログラミング言語 D (D Programming Language) について語るスレッドです。
過去スレは >>2
■本家
URLリンク(www.digitalmars.com)
URLリンク(www.kmonos.net) (和訳)
■コンパイラ
URLリンク(www.digitalmars.com) (DMD, 本家)
URLリンク(dgcc.sourceforge.net) (GDC, gccフロントエンド)
■参考URL
URLリンク(f17.aaa.livedoor.jp) (D言語研究)
URLリンク(f17.aaa.livedoor.jp) (D言語BOF)
URLリンク(dsource.org) (dsource)
URLリンク(tinyurl.com) (C/C++に疲れた人のD言語)
URLリンク(www.kmonos.net) (わかったつもりになるD言語)
URLリンク(shinh.skr.jp) (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか)
URLリンク(shoo.s20.xrea.com) (D言語とTangoの入門講座)
URLリンク(www.nicovideo.jp) (D言語で作られた芝ゲー niconico動画)
URLリンク(www.asahi-net.or.jp) (ABA Games)
■ IDE
URLリンク(dronten.googlepages.com) (DSciTE)
URLリンク(forums.codeblocks.org) (Code::Blocks)
URLリンク(www.dprogramming.com) (Entice Designer)
URLリンク(www.dsource.org) (Descent)
URLリンク(www.dsource.org) (Poseidon)
2:デフォルトの名無しさん
08/04/14 15:17:08
■過去スレ
Part17 スレリンク(tech板)
Part16 スレリンク(tech板)
Part15 スレリンク(tech板)
Part14 スレリンク(tech板)
Part13 スレリンク(tech板)
Part12 スレリンク(tech板)
Part11 スレリンク(tech板)
Part10 スレリンク(tech板)
Part 9 スレリンク(tech板)
Part 8 スレリンク(tech板)
Part 7 スレリンク(tech板)
Part 6 スレリンク(tech板)
Part 5 スレリンク(tech板)
Part 4 スレリンク(tech板)
Part 3 スレリンク(tech板)
Part 2 URLリンク(f3.aaacafe.ne.jp)
Part 1 URLリンク(pc5.2ch.net)
3:デフォルトの名無しさん
08/04/14 15:17:57
■関連スレ
D言語なら俺に聞け
スレリンク(tech板)
D言語を広めるスレ
スレリンク(tech板)
D言語は多分コケると思っている人の数→
スレリンク(tech板)
【次世代言語】D言語でOSを作ろう【Monaの移植?】
スレリンク(tech板)
バイナリをゲロる言語の魅力って何?
スレリンク(tech板)
その他リンク
【Java/C/PHP/Perl/Ruby/Python/TeX】Eclipse M22
スレリンク(tech板)
eclipseってそんなに良いか?【エクリプス】
スレリンク(tech板)
統合開発環境Eclipseプラグイン開発QA
スレリンク(tech板)
"Code of the Nerds" Digital Mars C/C++
スレリンク(tech板)
4:デフォルトの名無しさん
08/04/14 18:35:41
1otu
5:デフォルトの名無しさん
08/04/14 20:45:44
おつ
6:デフォルトの名無しさん
08/04/14 21:50:24
res!(1) << '乙';
7:デフォルトの名無しさん
08/04/14 22:17:09
in { assert(otsu >> 1); }
8:デフォルトの名無しさん
08/04/15 00:03:12
invariant 乙
9:デフォルトの名無しさん
08/04/15 00:56:08
enum 乙
10:デフォルトの名無しさん
08/04/15 01:19:53
throw new Otu(">>1");
11:デフォルトの名無しさん
08/04/15 06:55:12
せっかくなんでテンプレにしときますね
template Res(int N, O)
{
res!(N) << O.toString();
in { assert(O >> N); }
invariant O = N;
enum O = N;
throw new O(">>" ~ N.toString());
}
mixin Res(1, 乙);
12:デフォルトの名無しさん
08/04/15 09:31:07
ちょっと前にstd.slistって無かったっけ。俺の見た幻……?
それはそうと>>1乙。
13:デフォルトの名無しさん
08/04/15 12:55:41
>>12
あったよ
14:デフォルトの名無しさん
08/04/15 17:45:58
>>1
おつゆ
15:デフォルトの名無しさん
08/04/15 23:08:17
(´・ω・` )乙 ←ポニーテール
16:デフォルトの名無しさん
08/04/16 09:57:50
刀、 , ヘ
/´ ̄`ヽ /: : : \_____/: : : : ヽ、
,. -‐┴─‐- <^ヽ、: : : : : : : : : : : : : : : : : : : : : : }
/: : : : : : : : : : : : : :`.ヽl____: : : : : : : : : : : : : : : : : : /
,. -─「`: : : : : : : : : :ヽ: : : : : : : : :\ `ヽ ̄ ̄ ̄ フ: : : : :/
/: :.,.-ァ: : : |: : : : : : : : : :\: : : : :: : : :ヽ \ /: : : :/
 ̄ ̄/: : : : ヽ: : : . . . . . . . . . . .、 \=--: : : :.i / /: : : : :/
/: : ∧: \: : : : : : : : : : ヽ: :\: : : 〃}/ /: : : : :/ 、
. /: : / . : : :! ヽ: : l\_\/: : : : :\: ヽ彡: : | /: : : : :/ |\
/: : ィ: : : : :.i: : | \!___/ ヽ:: : : : : : :\|:.:.:.:/:! ,': : : : / |: : \
/ / !: : : : :.ト‐|- ヽ \: : : : : l::::__:' :/ i: : : : :{ |: : : :.ヽ
l/ |: : :!: : .l: :| \: : : l´r. Y {: : : : :丶_______.ノ: : : : : :}
l: : :l: : :ト、| 、___,ィ ヽ: :| ゝ ノ '.: : : : : : : : : : : : : : : : : : : : : : /
|: : :ト、: |: :ヽ ___,彡 ´ ̄´ ヽl-‐' \: : : : : : : : : : : : : : : : : : イ
!: :从ヽ!ヽ.ハ=≠' , ///// ///u /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
V ヽ| }/// r‐'⌒ヽ イ〉、
ヽ、______ー‐‐' ィ´ /:/:7rt‐---、 こ、これはポニーテールじゃなくて
ィ幵ノ ./:/:./:.! !: : : : :!`ヽ >1乙なんだからね!
17:デフォルトの名無しさん
08/04/16 12:32:03
D言語のネタ来るまで乙禁止
18:デフォルトの名無しさん
08/04/16 17:24:48
Dでデバイスドライバは書けますか?
19:デフォルトの名無しさん
08/04/16 17:37:19
OS書けるんだし書けるんじゃないのかね
20:デフォルトの名無しさん
08/04/17 11:13:17
>>11
URLリンク(codepad.org)
Line 3: no identifier for declarator res!(N)
Line 3: semicolon expected, not '<<'
Line 3: Declaration expected, not '<<'
Line 4: Declaration expected, not 'in'
Line 5: statement expected to be { }, not O
Line 6: enum declaration is invalid
Line 6: Declaration expected, not '='
Line 7: Declaration expected, not 'throw'
Line 8: unrecognized declaration
エラー大杉
21:デフォルトの名無しさん
08/04/17 11:14:59
乙失敗
22:デフォルトの名無しさん
08/04/18 12:50:17
2.0でmutable/const/invariant周りのエラーを出さずに
一回でコンパイルが通るプログラムを書くことが全然できない件についてorz
複雑すぎるよう
23:デフォルトの名無しさん
08/04/18 13:15:53
直感的じゃないよな
じゃあどうするのかと言われたら困るが
24:デフォルトの名無しさん
08/04/18 16:00:57
駄目言語
25:デフォルトの名無しさん
08/04/18 16:42:16
「opDot」が来る説
URLリンク(lists.puremagic.com)
26:デフォルトの名無しさん
08/04/18 17:04:01
標準ライブラリの関数の引数が
mutable/const/invariantのどれなのか
把握していないといけないのが辛すぎる
関数の引数は全部constでいいんじゃないの?
27:デフォルトの名無しさん
08/04/18 20:23:10
>>26
> mutable/const/invariantのどれなのか
> 把握していないといけないのが辛すぎる
うげぇなんだそれ。作者はユーザインターフェースってもんを一から勉強しろよ
28:デフォルトの名無しさん
08/04/18 21:09:09
間違えればエラーが出るから全く問題ない。
29:デフォルトの名無しさん
08/04/18 21:11:32
というか、もはやphobosまともに保守されてないだろ。
DMDと一緒に配布されてるphobosがコンパイル通らなかったりするし。
30:デフォルトの名無しさん
08/04/18 21:15:35
ここなんのスレだったっけ?
31:デフォルトの名無しさん
08/04/18 22:27:47
>>28
これが信者脳ってやつか
32:デフォルトの名無しさん
08/04/18 22:58:00
>>26
>把握してないと
型のある言語だったら大抵そうじゃね?
const/invariantとか別れてるのはDくらいかもだけど
33:デフォルトの名無しさん
08/04/18 23:21:08
引数の型ぐらいIDEが表示してくれるそれでいいんじゃね。
34:デフォルトの名無しさん
08/04/18 23:21:21
>>32
動的型付け言語も仕様上型のない言語も、不適切な型や値を突っ込めば
実行時にコケるか結果がおかしくなるわけだから、なんにしろ確認は必須だよねえ。
とはいえ、言語の性能ってのはそれ自体の性能だけじゃなくて、実際にはエディタや
周辺環境の性能も関わってくるから、そのへん不足してるせいで>>26ってことなら、
まあD言語(の言語自身か周辺環境)が悪い、といっても間違いじゃないだろうけど。
35:デフォルトの名無しさん
08/04/18 23:22:51
それよりも、参照渡しと値渡しの区別が呼び出し側でつかないのだけはどうにかして欲しい。
36:22==26
08/04/19 00:43:36
>>28 それはひどい
>>29 phobos捨てるべきなのか?
>>33 伝説のIDEがあるならそれで一応満足するのだが
>>32.34 最大の問題は関数の利用者が関数のために
明示的にdeep copyしないといけないところだと思えてきたよ
都合があるのは関数側なのにね
必要なら(.idupの代わりに)関数呼び出し直後に関数内で使う前にdeep copyして欲しい
37:デフォルトの名無しさん
08/04/19 00:54:15
>>31
氏ねよカス(笑)
38:デフォルトの名無しさん
08/04/19 00:58:31
最近の言語は文字列をimmutableな形式で持つことが多くなってきてるよね。
39:デフォルトの名無しさん
08/04/19 01:24:26
std.stringなんかはinvariant(char)[]とconst(char)[]の両方のオーバーロードを提供すればいいんじゃないの。
40:デフォルトの名無しさん
08/04/19 08:00:13
関数の引数ってconst()とrefとinとoutだけでいんじゃね?
41:デフォルトの名無しさん
08/04/19 10:54:42
>>40
いいよな
俺はそうしてる
42:デフォルトの名無しさん
08/04/19 11:43:45
>>40
URLリンク(www.kmonos.net) にあるように
エイリアシングの問題があるから、invariant引数は必要なところには
必要だと思う。
だがエイリアシングもクソもなく新しいinvariant文字列を返すような
std.stringの多くの関数にはどう考えても不要だと思う。
string,wstring,dstringの定義がphobosのObjectの項に書いてなかったりするし、
stringをinvariantにしたの忘れてるんじゃないかな。
43:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/19 11:59:57
> もちろん例えばtolowerならinvariantのは定義せず、constだけでいい。
引数をinvariantにすればtolowerは純粋関数になるから、
ある種の最適化ができる可能性があるよね。
そういう意味でこちらもやはり両方定義すべき。
45:デフォルトの名無しさん
08/04/19 12:08:46
>>44
invariantとかconstとかは純粋関数かどうかには関係なくね?
(引数以外の環境に依存せず同じ結果になるから。)
マルチスレッド対応とかはtolowerでやることじゃないだろうし。。
46:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/19 19:57:12
>>43
転送する引数が一つならまだしも複数になったら
自分で転送関数を書くのはやだぞ
48:デフォルトの名無しさん
08/04/19 20:58:02
>>46
プリミティブ型の配列ならそれでもいいけど、
オブジェクトの配列だったりすると何か問題が起こりそうな気が
49:デフォルトの名無しさん
08/04/19 21:23:08
opInvariant()の出番ですね!
50:デフォルトの名無しさん
08/04/19 21:28:10
その前にopCastを実用可能なものにしろと…
51:デフォルトの名無しさん
08/04/19 21:57:26
dmd1.028
static assert(is(void function()==function)); // static assert is false
なぜさ?
52:デフォルトの名無しさん
08/04/19 22:00:16
>>51
void function()は関数ポインタ型
53:51
08/04/19 22:52:43
>>52
アホな俺にも
static assert(is(void delegate()==delegate)); //ok
static assert(is(void function()==function)); // static assert is false
この違いが分かるように教えてくれまいか
54:デフォルトの名無しさん
08/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
08/04/19 23:21:10
>>52,54
static assert(is(typeof(void function())==function)); //ok
大変勉強になりました。
56:51
08/04/19 23:25:55
↑失敗
void func(){}
static assert(is(typeof(func)==function)); //ok
ありがとうございました。
57:デフォルトの名無しさん
08/04/20 00:30:38
俺も前それで1時間くらい悩んでしまったwww
58:デフォルトの名無しさん
08/04/20 00:35:25
>>57
typeidで確認しろwww
59:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/20 12:09:27
>>60
いや、よくない。
const(A)[]であるaの参照がどこかにある限り、
a.dupの要素のメンバは変更されうるから、
何らかの方法でAをディープコピーしないといけない。
62:デフォルトの名無しさん
08/04/20 13:43:53
.dupってディープコピーじゃないの?
63:デフォルトの名無しさん
08/04/20 14:04:39
std.contractだかなんだかにあるやつが
結局>>60な感じだったとおもったが
64:デフォルトの名無しさん
08/04/20 14:36:43
>>62
まさか。全く同じ内容の配列を複製するだけだよ。
>>63
assumeUniqueだよね。
これはプログラマの良心によってinvariant性を担保するもので、
>>60のような場合に使うのは不味いね。
65:デフォルトの名無しさん
08/04/20 15:13:19
D言語っていろんな仕様のバージョンがあって、
自分に合ったものを選んで使えば良いときいたんですけど本当ですか?
66:60
08/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
08/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
08/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
08/04/20 16:57:23
opCloneが未定義のときにconst/invariant -> mutable
opInvariantCloneが未定義のときにmutable/const -> invariant
に変換しようとしたときは今までどおりエラーになって
参照型メンバのディープコピー忘れを防止・・・とか
なんていうかGCばんざい
__EOF__
70:デフォルトの名無しさん
08/04/20 17:02:49
>>65 すぐ仕様が変わるだけで1.x系と2.x系のニ種類しかないよ
71:デフォルトの名無しさん
08/04/23 02:40:09
class child : private parent
{ ... }
この場合の private みたいに親クラスに属性つけるとどうなるんだっけ?
何も変わってないような気がするんだが。
export属性つけると怒られるし(dmd1.028に)。
72:71
08/04/23 03:30:19
privateに関しては自己解決した。
お騒がせしました。
73:デフォルトの名無しさん
08/04/24 16:59:42
静かだな
74:デフォルトの名無しさん
08/04/24 17:23:06
そろそろ更新くるんじゃないかな
75:デフォルトの名無しさん
08/04/24 19:50:57
何か難しいことでもしてるのかな
76:デフォルトの名無しさん
08/04/24 21:21:55
いきなり3.0とかかw
77:デフォルトの名無しさん
08/04/24 21:24:42
そして3.1でブレイクだな
78:デフォルトの名無しさん
08/04/24 21:26:22
次は95とかですかね
79:デフォルトの名無しさん
08/04/24 21:30:41
えっ、2095年?
80:デフォルトの名無しさん
08/04/24 21:51:05
3/1に3.1、9/5に95ですね、わかります。
81:デフォルトの名無しさん
08/04/25 00:17:30
え、それだけ言っておいてD2.013はスルーですか…?
Version D 2.013 Apr 22, 2008
82:デフォルトの名無しさん
08/04/25 01:24:24
>Html source files are now deprecated.
え?アレ?
密かに期待してたんだが、、俺だけだった?
83:デフォルトの名無しさん
08/04/25 01:51:11
・opDotはopCastのように盲目的に特定の型のインスタンスへ転送する機能
・switchのcaseはconstかinvariantな整数型変数なら定数じゃなくともOK
・HTMLファイルにD言語のソース埋め込める機能は黒歴史
・pureとnothrowは書くだけ書けるようにしておいたけどまだ何も機能しないよ
・synchronized文あるからvolatile文は非推奨
・__thread記憶クラス実装したけど、言語上での表現はたぶん別の形になるよ
・関数オーバーロードで、派生クラスはより近い祖先の引数型にマッチするようになったよ
あたりが主な変更?
opCastといいopDotといい謎な仕様だと思った。
HTML埋め込みは、Dコンパイラにやらせるべき仕事じゃなかったんだろうな、と思った。
84:デフォルトの名無しさん
08/04/25 02:43:05
opDotはalias thisみたいな匂いがするね
85:デフォルトの名無しさん
08/04/25 04:47:03
>>83
switchのcaseはさりげなく面白い変更だな。
同じ動作だが基準がインスタンスごとに変えられるようになるのかな?
86:デフォルトの名無しさん
08/04/25 06:25:57
switchはどうせなら文字列でも出来るほうが面白そうな気がする
87:デフォルトの名無しさん
08/04/25 08:45:43
>>81
気づいてたら教えてくらさい
88:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/25 13:43:07
>>86
switchの条件に文字列指定は前から出来るけど・・・
>C/C++と違い、 文字列もswitch文で使用できます。
って書いてるし。
90:デフォルトの名無しさん
08/04/25 13:47:28
>>89
>>86 はそういう意味じゃないだろ
>>83 の「switchのcaseはconstかinvariantな整数型変数なら定数じゃなくともOK」に対して,「const/invariantな文字列をcase文に使えたら面白い」という話だろ
91:デフォルトの名無しさん
08/04/25 14:21:51
まあ多分こっちの意図と違う事言ってるだろうなと思いつつ勢いに任せて書いた。すまぬ。
92:デフォルトの名無しさん
08/04/27 07:31:21
switch caseのconst変数について。
スタックにあるconstな変数は受け付けますが、
ヒープにある可能性のあるものは全部NGかなという感じです。
関数内(ネスト関数の外側関数含む)でconstな変数は受け付けますが、
クラスフィールド上でconstなものは受け付けません。
93:デフォルトの名無しさん
08/04/27 14:02:04
D面白そうだからやってみたいんだけどオススメの本あったら教えて
英語か日本語の本で
94:デフォルトの名無しさん
08/04/27 14:13:24
他の言語知ってるなら言語仕様のページ見るだけで十分だと思う。
95:デフォルトの名無しさん
08/04/27 14:19:32
>>93
日本語の本で一番新しいのは『D言語パーフェクトガイド』。ただし古くて何の役にも立たない。
英語で最近出たのは『Learn to Tango with D』。まだ読んでないから内容の是非はわからない。
96:デフォルトの名無しさん
08/04/27 14:21:23
D はリアルタイムで言語が大きく変わるから
ついていくには本なんて役に立たない
97:93
08/04/27 14:24:10
learn to tango->ダンスの本かと思ってスキップしてた
amazonで買った
98:デフォルトの名無しさん
08/04/27 15:08:48
Dの本って出版された時点で時代遅れになってそうだな。
99:デフォルトの名無しさん
08/04/27 15:10:25
D 1.0 で止まっていいのなら何とかなりそうではあるが・・・
D 2.0 に興味があるなら本は無駄だと言わざるを得ない
100:デフォルトの名無しさん
08/04/27 15:30:26
opDotって委譲しやすくするって認識でおk?
101:デフォルトの名無しさん
08/04/27 15:31:24
>>100
No.
単一の型にしかforwardできないから何の役に立つのかさっぱり分からない。
102:デフォルトの名無しさん
08/04/27 15:38:18
o.m
が
o.opDot!("m")
にでもなれば、いろいろ面白そうなのにな。
103:デフォルトの名無しさん
08/04/27 17:24:46
>>102
なんにつかえるかわからんけど、おもしろそう
104:デフォルトの名無しさん
08/04/27 17:26:07
>>102
関数の引数のstaticが来たらopDot("m")でいい気ガス。
105:デフォルトの名無しさん
08/04/27 18:05:18
>>103
ActiveXのレイトバンディングとかに使えるかも。
106:デフォルトの名無しさん
08/04/28 03:29:47
クラス関数を列挙して、それに対応する配列の擬似プロパティ版関数を作るテンプレートってありますか?
下記のような……
class Foo {
void fun(int n);
...
}
↓
void fun(Foo[] foos, int n) {
foreach(foo; foos) fun(n);
}
...
107:デフォルトの名無しさん
08/04/28 18:42:57
作れないことはないと思うけど、すごく汚いものになる気がする
108:デフォルトの名無しさん
08/04/28 19:25:13
__traitsのallMembersやderivedMembersでメンバの名前を得られるから、
それらを関数かどうか判定して、それにあった関数定義を生成して…、
という形になるんじゃないかな。
109:デフォルトの名無しさん
08/04/28 20:29:22
>New/Changed Features
>Hidden methods now get a compile time warning rather than a runtime one.
これうざす。
親クラスの関数をFinalにして回避してるんだけど
そもそもおれのクラスの設計がいけてないってことなのかなぁ・・・
110:デフォルトの名無しさん
08/04/28 22:06:04
>>109
警告メッセージに「オーバーライドしてんのにoverrideついてないよ」
って書いてあるから、素直にoverrideつけりゃいいんじゃなかろうか。
111:デフォルトの名無しさん
08/04/29 06:18:29
>>110
このケースのことじゃなかろうか
class A {
int foo(int a)
}
class B : A {
int foo(int a,int b);
}
名前が一緒で引数の取り方が違う場合
112:デフォルトの名無しさん
08/04/29 17:04:35
>>111
勘違いしてたわ。
なるほどオーバーロードの関係ね。
URLリンク(www.kmonos.net) で、
オーバーロードの解決時に基底クラスの関数を含めるにはalias使えとあるから、
class A{
int f(){ return 3; }
}
class B:A{
alias A.f f;
int f(int x){ return x*x;}
}
たぶんこんな感じでOK
113:デフォルトの名無しさん
08/04/29 21:44:13
>>112
わっ本当だ!
ありがとうございます!
aliasの役割っておおいですね・・・
114:デフォルトの名無しさん
08/04/29 23:02:51
使う場面は様々だけどそのスコープの特定の名前セットに
名前を追加するという役割は同じだよ
115:デフォルトの名無しさん
08/04/30 00:53:51
dHell+DMD1.0でゲーム作るの楽しい!!!
/+D言語でハンガリアン記法どうしようか・・・うーむ+/
116:デフォルトの名無しさん
08/04/30 02:28:55
>>115
dHellってdHell2じゃなくて?
無印の方はSDLとほぼ同等だと思ってたが
システムハンガリアンだったらダメ絶対
アプリケーションハンガリアンだったら推奨
URLリンク(ameblo.jp)
117:デフォルトの名無しさん
08/04/30 03:01:33
アプリケーションハンガリアンもtypedefがあるからあまり必要無いんじゃない?
118:デフォルトの名無しさん
08/04/30 11:48:18
>>117 え?
119:デフォルトの名無しさん
08/04/30 12:21:11
>>118
Cとかと違って,違う型として扱ってくれるからじゃない?
全て上手く行くかどうか分からないけども
120:デフォルトの名無しさん
08/04/30 14:57:22
データの目的を変数名に入れなくても、typedefで型のほうを目的固有にできるって話じゃね。
URLリンク(www.radiumsoftware.com)
この例なんかは、安全な文字列型と危険な文字列型を用意すれば解決するようにも思える。
121:デフォルトの名無しさん
08/04/30 17:29:48
>>120のリンク先では「(C++で)いちいちウィンドウ座標とレイアウト座標を
別のクラスにするのは大仰すぎて非現実的だからアプリハンガリアンがいいよね」
と言いたいようだけど,ただ視覚に訴えかけるだけじゃなくて
それぞれを暗黙的に変換されないようにするべきだと思う.
typedefがあるD言語では仕組みは簡単だし
実は同じ型だから変換のコストは安いからもってこい
typedef Point LayoutPoint;
typedef Point WindowPoint;
とか
typedef /*unsafe*/string safeString;
とか.
D言語ではアプリハンガリアンでさえいらず型システムに任せられる気がしてきた
122:117
08/04/30 17:31:07
>>118
すまん言葉足らずだった
>>119-120が言っている通り
なるべくならコンパイルエラーで検出できるようにした方が間違いが無いだろうし
オーバーロードが出来るから処理も分けやすい
全てのケースで置き換えられるとは言わないけど
大体はtypedefが使えると思う
123:デフォルトの名無しさん
08/04/30 17:40:46
文字コード別に文字列型を定義してしまっても良い気がする。
124:デフォルトの名無しさん
08/04/30 18:29:26
>>123 こんなのはしてみたけど
typedef char mbchar;
alias invariant(mbchar)[] mbstring;
文字列同士の連結に ~ じゃなくて連結関数を使わないといけないのがネックだった
125:デフォルトの名無しさん
08/04/30 19:42:24
ただの配列だから~演算子で連結できるだろ
126:デフォルトの名無しさん
08/04/30 19:44:23
>>124
charは既にUTF8って意味を持ってるから、ubyteを基底にするべきだろうね。
127:デフォルトの名無しさん
08/04/30 20:04:38
配列でptrを使わずに&演算子で出てくるのは配列の最初の要素へのポインタと配列の長さを格納した8バイトのデータ?
128:デフォルトの名無しさん
08/04/30 20:21:27
>>125
あ,ゼロ終端の配列にするからいけないのか thx
>>126
間違えた.元々 ubyte にしてました
129:デフォルトの名無しさん
08/04/30 20:25:35
>>127
&演算子が返すのは、配列の参照が保持されている場所のアドレスか、
配列の先頭の要素のアドレス。動的か静的かで挙動が異なる。
130:デフォルトの名無しさん
08/04/30 21:15:10
>>116
すまん、dHell2の方だった
アプリケーションハンガリアンってあるのか・・・
システムハンガリアンしか知らなかった・・・thx!!
131:デフォルトの名無しさん
08/04/30 21:59:30
>>114
なるほど
132:デフォルトの名無しさん
08/04/30 22:43:31
>>122
なるほど、得心しました。
単純にアプリケーションハンガリアンはレビュアーの為でもあるんでそっちまで否定されてるのかと思い込んでました。
133:デフォルトの名無しさん
08/05/01 07:09:09
>>124
文字列型はinvariant(char)[]でもう確定なのかな
せめて一段aliasがあればな…
ていうかWindowsでUTF8が(ry
134:デフォルトの名無しさん
08/05/01 10:37:10
ところで、charがUTF-8の文字という意味を持っているなら、
なんで、toMBSzとかはchar*を返すんだ?
ubyte*を返すべきなんじゃないか?
135:デフォルトの名無しさん
08/05/01 13:11:56
まったくその通りだと思います
136:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/01 15:22:47
fflush(stdout);
138:デフォルトの名無しさん
08/05/01 15:26:06
>>136-137
std.stdio.flushall();
てのなかったっけ
139:デフォルトの名無しさん
08/05/01 15:32:06
>137
>138
出てこないみたいです。
140:デフォルトの名無しさん
08/05/01 16:49:44
あーーーわかりますた。
標準出力用のコンソールが、eclipse の外のウィンドウで出てたです。
気がつかなかったー。
141:デフォルトの名無しさん
08/05/01 17:36:59
ワラタ
142:デフォルトの名無しさん
08/05/01 20:25:08
>>136
その実現する過程をぜひ教えてほしい・・・
143:デフォルトの名無しさん
08/05/01 22:28:47
eclipse は元から入ってました。
で、descent を入れました。
URLリンク(eclipsewiki.net)
コンパイラが別途必要なのを気がつかなくて入れてなかったので、
あとから 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
デバッガの設定
URLリンク(www.dsource.org)
144:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/01 23:44:39
乙です
146:デフォルトの名無しさん
08/05/02 06:26:21
>>143-144
うわ、ありがとう!!
147:デフォルトの名無しさん
08/05/02 18:23:04
Descent ver あがってるね。
148:デフォルトの名無しさん
08/05/02 19:33:18
型タプルの各型の文字列表現が欲しいんだが可能でしたっけ?
149:デフォルトの名無しさん
08/05/02 20:10:02
stringof プロパティを使えば出来るかと
URLリンク(www.kmonos.net)
動作例 これでいいのかな?
URLリンク(codepad.org)
150:デフォルトの名無しさん
08/05/02 21:44:48
>>148じゃないけど…おれもちょっとそれは悩んでたことがある。結局あきらめたけど。
>>149
URLリンク(codepad.org)
こんな感じに、モジュール名まで考えたときに stringof だと都合が悪いんだよね…
mangleof と demangle でいけないかと思ったけど、これもなんかうまくいかないし…
どうすればいいんだろう?
151:デフォルトの名無しさん
08/05/02 23:24:11
1.0から0.2を5回引いても0にならないのはどうにかならないんでしょうか・・・。
152:デフォルトの名無しさん
08/05/02 23:37:42
面倒でも整数で
153:149
08/05/02 23:40:14
>>150
うーん、確かに半端だ…
.NET Framework の Type.Fullname プロパティ相当のものが
現在のD言語には用意されていないようなのが不味いのかな。
154:デフォルトの名無しさん
08/05/03 00:19:06
>>151
浮動小数点数がどういうものかを勉強しろ。
155:デフォルトの名無しさん
08/05/03 00:33:29
Dの浮動小数点数ってずいぶん貧弱なんですね
156:デフォルトの名無しさん
08/05/03 00:37:58
>>148
stringof はタプルに対しても使える。
モジュール名は実行時でも良いなら typeid で取れるね。
157:デフォルトの名無しさん
08/05/03 01:16:37
>>155
Dの・・・?
158:デフォルトの名無しさん
08/05/03 01:24:55
あちこちで春ですよ
159:デフォルトの名無しさん
08/05/03 01:36:59
さすがに>>155には失笑した
160:デフォルトの名無しさん
08/05/03 01:48:20
>>155はとりあえず基本情報処理技術者の資格を取ってきなさい
161:デフォルトの名無しさん
08/05/03 01:51:09
>>155
今まで使ってきた言語を示すべし
162:デフォルトの名無しさん
08/05/03 02:25:19
PythonのDecimalみたいなのがあれば良いんじゃない
163:デフォルトの名無しさん
08/05/03 02:51:49
>>162
Decimalはライブラリ(というかモジュール?)だから組み込みどうしではPythonも同じじゃない?
標準で入れるべき,となるとまた別な問題な気がするけど,dsourceとかにあるのかなぁ
164:デフォルトの名無しさん
08/05/03 10:30:41
Dの10進浮動小数点数ライブラリはまだ見たことはないな
まあ、欲しい奴が移植すればいいだろう
165:デフォルトの名無しさん
08/05/03 15:22:40
>>155はMatlabとかMathematicaとか使ってたんだろ。
166:デフォルトの名無しさん
08/05/03 15:37:18
C#は1.0から128bitDecimal型標準装備だな
167:デフォルトの名無しさん
08/05/04 09:46:12
>>143-144に刺激されて、Eclipse&Dscentいれてみたが、
VSのMakeプロジェクト、asm{ int 3;} に慣れすぎていた自分がいた・・・
168:デフォルトの名無しさん
08/05/05 01:02:20
仕様で見つけられないので質問です。(1.0 の仕様しか見てませんけど)
クラスメンバーのアクセス制限属性(private とか protected とか)は、
記述したらそのアクセス制限が適用されるのはわかるのですが
記述しなかった場合、どのアクセス制限が適用されるのかご存じのかた居ませんか?
とりあえず試した限りでは public っぽいのですが・・・。
169:デフォルトの名無しさん
08/05/05 01:23:20
URLリンク(www.kmonos.net)
デフォルト publicだよ
170:デフォルトの名無しさん
08/05/05 01:25:48
あ、ごめん2.0のURL出しちゃったけど1.0系でも同じだよ
171:デフォルトの名無しさん
08/05/05 01:43:51
・・・これで判れというのもなかなかシビアなものがある。>DigitalMars
どもありがとうございました~
172:デフォルトの名無しさん
08/05/05 08:12:45
>>これで判れ
Dは初心者向けじゃなくて今までの言語との比較が基本だから仕方ない気もしてたり
173:デフォルトの名無しさん
08/05/06 00:46:47
poseidonがなんか少し新しくなってる
174:デフォルトの名無しさん
08/05/06 01:35:34
>>171
URLリンク(rayerd.ddo.jp)
比較したいならこっちをどうぞ
175:デフォルトの名無しさん
08/05/06 01:38:46
[poseidon diff]
URLリンク(www.dsource.org)
[descent diff]
URLリンク(www.dsource.org)
176:デフォルトの名無しさん
08/05/06 04:51:01
>>149
ありがとうございました。
おかげさまで>106もどきができたのですが、
長いのでここに貼るのはどうかなという感じのものです。
codepadはたぶんコンパイラのバージョンの違いで通りませんでした。
177:デフォルトの名無しさん
08/05/06 20:37:53
dflのListViewってハンドル取れないようになってないかい?
178:デフォルトの名無しさん
08/05/08 09:39:00
ハンドルって何のこと
179:デフォルトの名無しさん
08/05/08 12:09:55
キャンドル♪ハンドル♪ペダルにサドルに自♪転♪車♪漕いどる♪
180:デフォルトの名無しさん
08/05/08 17:44:31
Windows的にいえば、Windowハンドルじゃないかい?
しかし、懐かしいもんひっぱってきたねぇ。>>自転車
意味的にはハンドルはどっちも同じだったと思うけど。
181:デフォルトの名無しさん
08/05/08 18:50:38
デバイスコンテキストハンドル
182:デフォルトの名無しさん
08/05/08 19:10:34
久しぶりにdflのサイト覗いてみたけど、3月中旬にD2対応してたんだね。
そろそろD2に移行しようかな
URLリンク(wiki.dprogramming.com)
183:デフォルトの名無しさん
08/05/08 21:04:49
>>182
あれ?どうやったらD2で使えるんですか?
184:デフォルトの名無しさん
08/05/08 21:26:32
URLリンク(wiki.dprogramming.com)
まだ対応してないとも書いてるけど
185:デフォルトの名無しさん
08/05/08 22:01:43
うちの環境がおかしいだけでできるみたいです
186:デフォルトの名無しさん
08/05/08 22:32:15
インストールして普通に動いたよ@v2.013
>>184
スナップショットのほうで対応してるってことかと。
187:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/08 23:15:56
多分わかった
両方のバージョンを入れていて競合する人はdfl.exeを使う前に
dfl -i
を実行してやればいいみたいだ
189:デフォルトの名無しさん
08/05/09 00:29:43
>>179
会いに来て荒♪井♪注♪
190:デフォルトの名無しさん
08/05/09 07:28:43
DFLでつかえるコントロール一覧のスクリーンショットってなかったっけ
191:デフォルトの名無しさん
08/05/09 16:24:34
URLリンク(www.dprogramming.com)
192:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/10 00:48:28
Test#b はローカル変数のアドレスを返してるようなもんだと思うんだけど
194:192
08/05/10 01:38:42
>>193
確かにTest#bを
Test* b()
{
static Test c;
c = this;
return &c;
}
にすると解決
ただ、なんとなくいまいち泣希ガス
意図としては関数bには&tを返してほしいんだが、そういうのはワガママ?
195:デフォルトの名無しさん
08/05/10 01:49:12
そんなの無理だろ。
オブジェクトを値渡ししてるのに
196:デフォルトの名無しさん
08/05/10 01:54:47
もともと参照だしそれって意味あるの?
197:192
08/05/10 02:18:39
ああ、そういえばそうか。
根本的なことわすれてるなおれ。
別方法で打開しました。おさわがせ。
198:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/10 03:51:49
C++使ってたから俺も混乱した
200:デフォルトの名無しさん
08/05/10 19:35:18
Dも、C#みたいに型省略宣言入れてくれよ。
201:デフォルトの名無しさん
08/05/10 19:36:25
autoで我慢しなせぇ。
202:デフォルトの名無しさん
08/05/10 22:11:02
>>200 どんなの?
203:デフォルトの名無しさん
08/05/10 22:19:29
匿名型のことかな
204:202
08/05/10 22:45:05
これか?
void main(){
auto x = new class {int a; string b;};
x.a = 1;
x.b = "hoge";
}
205:デフォルトの名無しさん
08/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
08/05/10 22:59:05
まあそういう仕様だわなあ
同じ型がいい理由ってどんなんがあるの?
207:デフォルトの名無しさん
08/05/10 23:00:45
ん・・・あれ?
行頭のスペースが残ってる
for(;;){
writefln();
}
208:デフォルトの名無しさん
08/05/10 23:05:14
>>206
配列に突っ込みたいときとか
209:デフォルトの名無しさん
08/05/10 23:31:08
てs
210:デフォルトの名無しさん
08/05/11 05:34:08
だろ?
211:デフォルトの名無しさん
08/05/11 08:00:40
うーんLINQみたいな応用があれば
匿名型は有意義なんだろうけど今のままならあんまりかなあ
匿名型のTupleを可変長テンプレートの引数に与えるとかで代用できないのか
212:デフォルトの名無しさん
08/05/11 11:00:31
>>191
ありがとう~
213:デフォルトの名無しさん
08/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
08/05/12 20:41:00
auto p= has( as, key)
p.MEMBER= VALUE;
って感じです。
こうやったほうがいいぜ、とかご意見ありましたらm(_ _)m
215:デフォルトの名無しさん
08/05/12 20:42:16
V* has(K, V)( ref V[k] as, K key)
とかじゃあかんの。
216:213
08/05/12 23:46:32
がーーーーん
217:デフォルトの名無しさん
08/05/12 23:54:09
配列は参照型だからrefである必要もないな。
218:213
08/05/13 08:30:21
>>215,217
さらしてみるもんですね・・
ありがとうございます
219:デフォルトの名無しさん
08/05/13 20:33:38
DBIに
private import tango.stdc.stringz : toDString = fromUtf8z, toCString = toUtf8z;
というコードがあるんですが、
これってどう修正すれば動くんでしょう?
220:デフォルトの名無しさん
08/05/13 20:56:43
こうかな?
private import tango.stdc.stringz : toDString = fromStringz, toCString = toStringz;
参考:
URLリンク(dsource.org)
URLリンク(www.kmonos.net)
221:デフォルトの名無しさん
08/05/13 21:30:45
>>220
ありがとうございます。
222:デフォルトの名無しさん
08/05/13 21:42:04
dでSqliteを使おうと思っています。
URLリンク(www.digitalmars.com)
でImplibを使ってLibファイルを作り、
pragma (lib, "sqlite3.lib");
extern (C):
int sqlite3_open (char* filename, sqlite3** database);
int sqlite3_close(sqlite3* database);
として関数を使ってみたんですが、Undefined Symbolと出てしまいます。
何か足りないものか間違ってる所があるんでしょうか?
223:デフォルトの名無しさん
08/05/13 22:17:29
sqlite3
224:デフォルトの名無しさん
08/05/13 23:06:23
小文字を大文字にするテンプレートを書いてみたんだけど
URLリンク(codepad.org)
こう書くより、
URLリンク(codepad.org)
と、末尾再帰の形にしたほうがいいのかな?
コンパイル時に末尾最適化がかかるとは思ってないけども、
文字列が長くなったときに影響あるかな…と思いまして。
225:デフォルトの名無しさん
08/05/13 23:09:58
>>224
関数にすれば良くね?
226:デフォルトの名無しさん
08/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
08/05/13 23:48:25
>>224 >>225
コンパイル時に実行できる関数がうまく作れなかったのでテンプレートにしたんだけど
関数で書けるのなら関数のほうがいいですね。参考になりました。ありがとう。
228:デフォルトの名無しさん
08/05/14 00:20:18
>222
ポエニーのソースを見ると良いよ。sqlite3 をつかってたはず
229:デフォルトの名無しさん
08/05/14 04:01:35
>>228
ありがとうございす。
ソースの中にあった、dllとLibファイルを入れ替えたら動きました・・・。
Libファイルの作り方が悪かったようです。
230:デフォルトの名無しさん
08/05/14 07:12:25
ひさしぶりにDさわったら、ずいぶんましになってんのな
前はコンパイラがすっこんすっこん落ちてた
231:デフォルトの名無しさん
08/05/14 10:11:13
void foo() {
void bar(...) {
}
}
これをdmd_2.012-030708_i386.debでコンパイルするとSegmentation faultが出る
232:デフォルトの名無しさん
08/05/14 14:22:02
可変引数(?)の...をその関数内の...を受ける関数に渡す場合ってどうすればいいんでしょうか?
233:デフォルトの名無しさん
08/05/14 16:00:42
タプルでいいならこれでおkかな?
void foo(T...)(T a){
void bar(U...)(U b){writefln(b);}
bar(a);
}
234:デフォルトの名無しさん
08/05/14 19:58:22
>>232
Cスタイルならva_listをとる関数を別途用意するしかない。
Dスタイルなら配列で受けて配列のまま渡せばいい。
可変長引数タプルなら>>233。これが汎用性は一番高い。
235:デフォルトの名無しさん
08/05/14 23:04:12
dmd1.029+
dsource.orgのWindowsAPI bindings+
わなDさんから頂いたcoffimplibでPlatformSDKから作ったlib
でWM_IME_CHARがこないんだ、がみんなどうよ?
236:デフォルトの名無しさん
08/05/15 13:13:07
Error: no property 'hogefunc' for type 'hoge.Hoge'
これはどういう意味なんでしょう。
関数は定義されてるはずなんですが。
237:デフォルトの名無しさん
08/05/15 13:14:28
思いっきり勘違いでした。
定義されてない関数でした。
238:デフォルトの名無しさん
08/05/15 16:21:34
>>235 それをパッと実験できる準備ができてる人はあんまりいないと思う
239:デフォルトの名無しさん
08/05/16 01:32:39
文字列の連想配列って
char[char[]][]
じゃエラーになるんですが、どういう風に宣言すればいいんでしょう?
240:デフォルトの名無しさん
08/05/16 01:42:54
string[string]
241:デフォルトの名無しさん
08/05/16 03:03:20
char[][char[]]
242:デフォルトの名無しさん
08/05/16 16:07:18
>>239
それじゃ文字の連想配列の配列じゃね
243:デフォルトの名無しさん
08/05/16 20:47:04
dでリフレクションな事ってできませんかね。
アクション呼ぶのにSwtich文つらつら書いてるのがあれなんですが。
244:デフォルトの名無しさん
08/05/16 21:43:46
1.reflection.dを使う
2.BOFの発表であったいずれ来るかもしれないライブラリを待つ
3.自分で作る
のどれかかな
245:デフォルトの名無しさん
08/05/17 06:44:20
>>241
>>242
動きました。
ありがとうございました。
246:デフォルトの名無しさん
08/05/17 11:56:07
と思ったら動いてませんでした。
["hoge":"omg","test":"sod"];
こういう配列を受け入れる変数はどういう宣言が必要なんでしょうか。
247:デフォルトの名無しさん
08/05/17 11:59:31
string[string] aa = ["hoge"[]:"omg"[],"test":"sod"];
248:デフォルトの名無しさん
08/05/17 13:23:02
あぁ、すごい勘違いですた。
~=じゃなくてそのまま=で入れられるんですた。
249:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/17 16:40:48
1) ユーティリティとしてのdmdの使い勝手の向上
2) phobosの改善
3) バグ修正
といったところか
255:デフォルトの名無しさん
08/05/17 18:27:42
関数ごとに.objを分けるみたいな機能で、リンク速度が向上して、サイズは小さくなるのかな。
256:デフォルトの名無しさん
08/05/17 23:22:30
最近、64bitのLinux環境でD言語を使い始めたんですけど、
gdcって、もう開発停止してるんですか?
メンテもされてないコンパイラを使うのは少し気が引けます。
257:デフォルトの名無しさん
08/05/17 23:27:20
ペース遅いけど今も開発されてるよ。
258:デフォルトの名無しさん
08/05/17 23:29:12
開発は停止してないようだがリリース間隔はお世辞にも早いとはいえない
259:デフォルトの名無しさん
08/05/17 23:34:46
早くコミット権限を貰いに行って最新版DMDに対応させる作業にかかるんだ!
260:256
08/05/17 23:45:48
>>257,258
レスありがとうございます。
sourceforge見てもわからなかったので、困ってました。
とりあえずgdcを使っていこうと思います。
261:デフォルトの名無しさん
08/05/17 23:47:03
win32版dmd1.028で連想配列の動的配列のlengthを設定しようとすると
固まるんだけど、誰か分かりませんか?
こんなの
int main() {
int[int][] a;
a.length = 5;
return 0;
}
262:デフォルトの名無しさん
08/05/18 00:25:43
>>261
ほんとだ。これでも固まる(実行時)。
void main()
{
typedef int[int] intint;
intint[] a = new intint[5];
}
263:デフォルトの名無しさん
08/05/18 00:47:15
シャアw
264:デフォルトの名無しさん
08/05/18 04:04:55
>>261
それはずっと前からバージョン関係なく止まる。
効率良くはないが、俺はループさせてnullで埋めたりしてた。
265:デフォルトの名無しさん
08/05/18 08:36:52
伝説のIDEか
URLリンク(www.digitalmars.com)
Zeus自体は有料なんだけどね
URLリンク(www.zeusedit.com)
266:デフォルトの名無しさん
08/05/18 16:45:27
std.bindいじってたらdmd落ちた・・・
どこが原因かわかんね
267:デフォルトの名無しさん
08/05/18 17:30:22
2.014 std.xmlがうまくうごかなくなった・・
onStartTag内で、attrがからっぽ
268:デフォルトの名無しさん
08/05/19 03:50:56
質問なんですが、一度設定したらそれ以降不変なメンバの初期化をコンストラクタに
与えられた値を使って行いたいです。D言語だとinvariantなメンバの初期化はどうやって
行うのでしょうか。
269:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/19 08:19:55
DはC++と違ってメンバ初期化子ないもんね
271:デフォルトの名無しさん
08/05/19 08:25:55
参照型のクラスにはいらないし
値型の構造体にはコンストラクタが定義できない
無駄なインスタンスが作られないからメンバ初期化子はいらないわけか
272:デフォルトの名無しさん
08/05/19 08:56:39
誰かstd.encodingについて3行でまとめてくれ
273:デフォルトの名無しさん
08/05/19 09:12:33
切り捨てなきゃ無理
274:デフォルトの名無しさん
08/05/19 14:09:25
文字列エンコーディングに関する標準が出来た感じ?
encodingのドキュメントぱっと見たけど、シグニチャがGeneric過ぎて使い方がすぐイメージできんw
あとEncodingSchemeASCIIとかのクラス名はASCIIEncodingSchemeのほうが良くないか。
語順がなんか気持ち悪い。
ともあれ、これにEncodingStreamと、ICUEncodingSchemeとかを加えてやれば、
Javaや.NET並のエンコーディング処理能力が得られるのかな。
275:デフォルトの名無しさん
08/05/19 17:28:28
>Javaや.NET並のエンコーディング処理能力が得られるのかな。
それはいいな
276:デフォルトの名無しさん
08/05/20 03:00:00
int hoge();
void hoge(int v);
で、hoge っていうプロパティになるらしいけど、
hoge++;
って出来ないのは何とかならないですか?
DMD 1.028 です。
277:デフォルトの名無しさん
08/05/20 03:14:21
なんともなりまへん。
278:デフォルトの名無しさん
08/05/20 06:16:40
ニュースグループで、ウォルたんにお願いしてみるしか。
気が向いたら、やってくれるかも。
279:デフォルトの名無しさん
08/05/20 07:34:51
+=もだめだっけ。結構前から「いつかやる予定」ってどっかに書いてなかった?
280:デフォルトの名無しさん
08/05/20 16:09:15
「いつかやる予定」=「めどいからやらない」
281:デフォルトの名無しさん
08/05/20 17:00:58
時の流れが、少ないコードで何も崩さずそれを追加できるよう状況を整理するのを待ってるわけか。
いや、「いつの間にか必要無くなってる」というのを待ってるのかもw
282:デフォルトの名無しさん
08/05/20 17:52:35
コンパイラのソースが公開されてるんだから
自分たちでやるっつーのは?
283:デフォルトの名無しさん
08/05/20 18:03:47
言語として互換性を損なうと、それこそ意味がない。
284:デフォルトの名無しさん
08/05/20 19:13:40
>>280
今やらねばいつできる -> 今やらねばいつかできる
俺がやらねば誰がやる -> 俺がやらねば誰かやる
285:デフォルトの名無しさん
08/05/20 19:27:13
という
286:デフォルトの名無しさん
08/05/22 09:46:31
win32.windowsとかdflとか2.0対応のライブラリが
増えてきていい感じに使えるようになってきたね
287:デフォルトの名無しさん
08/05/22 13:59:29
あとはTango?
統合されないのかなぁ・・・
ひろいとはいえないDの世界で基本ライブラリが
2つ開発されているのはなんとももったいない
288:デフォルトの名無しさん
08/05/22 14:47:57
walたんがそのうち統合されるんじゃねwww
みたいなこと言ってなかったっけか
289:デフォルトの名無しさん
08/05/22 16:25:44
BOFの時の質問にそんなんがあったな。
やっぱり「そのうち統合されるんじゃない?」みたいな感じだった気が。
今のところ統合する気はないってことだよね。
290:デフォルトの名無しさん
08/05/22 18:00:18
タンゴボスは駄目なのかい
291:デフォルトの名無しさん
08/05/22 23:05:11
名前からしてダメダメオーラが
292:デフォルトの名無しさん
08/05/22 23:06:38
ウォルたんのギャグセンスは微妙w
293:デフォルトの名無しさん
08/05/23 12:32:39
しかし0.1ショックは面白かった
294:デフォルトの名無しさん
08/05/23 16:03:12
Tangoも…
295:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/23 23:47:22
VariantのopEqualsの実装がどうなってるのか確認したほうがよさげ。
297:デフォルトの名無しさん
08/05/24 00:43:03
機能から複数のファイルに分けられたユーティリティ関数を
同じ名前空間みたいな感じでアクセス( Util.hoge() って感じに)したくて、
今はそれぞれのファイルにおいて関数をテンプレートで書いて、
ひとつのファイルでそれらをミックスインしてるんだけど、他に良い方法
ないですか?
298:デフォルトの名無しさん
08/05/24 00:48:34
ファイルを結合する
299:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/24 01:18:48
> 298
あー、なるほど・・・。ありがとうございます!
import("hoge.d"); ですよね。やってみます。
ピンと来たんだけど調べるのに時間かかってしまった・・・。
301:297
08/05/24 02:02:50
正確には
mixin(import("hoge.d"));
でコンパイルオプション -Jhoge ってな感じですね。
うまくいきました。感謝です。
趣味でゲーム作るならやっぱりD言語ですねぇ
302:デフォルトの名無しさん
08/05/24 07:25:47
>>299
わ、本当だ!
ありがとうございます。
if( var("aaaa") in dic ) {
writeln( "has" ); //表示されない
}
303:デフォルトの名無しさん
08/05/25 09:24:28
listviewにアイコン載せれるようになったらおいらはいつでも戻ってくる
304:デフォルトの名無しさん
08/05/25 11:33:38
>>302
Dのリテラル文字列ってinternされないって事なのかな?
305:デフォルトの名無しさん
08/05/25 12:37:31
URLリンク(wiki.dprogramming.com)
March 3, 2008
dfl-20080303.exe installer
* Implemented ImageList.
* Added images to ListView.
URLリンク(www.dprogramming.com)
306:デフォルトの名無しさん
08/05/25 13:00:14
>>305は>>303へ
307:デフォルトの名無しさん
08/05/25 15:00:09
>>304
toHashは同じ値になるから,結局はopCmpやopEqualsの実装によるのではなかろうか
308:デフォルトの名無しさん
08/05/25 16:32:51
>>307
var("aaa") == var("aaa") ってなりますね。
opCmpかな~
309:デフォルトの名無しさん
08/05/26 19:48:25
Dで大規模アプリの開発に取り掛かったんだけど言語の選択ミスしてる?
310:デフォルトの名無しさん
08/05/26 19:54:02
大規模アプリってなんぞ
311:デフォルトの名無しさん
08/05/26 20:24:55
>309
ムチャシヤガッテとは言っておく。
312:デフォルトの名無しさん
08/05/26 20:33:41
>>309
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::。:::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::。::::::...... ... --─- :::::::::::::::::::: ..::::: . ..::::::::
:::::::::::::::::...... ....:::::::゜::::::::::.. (___ )(___ ) ::::。::::::::::::::::: ゜.::::::::::::
:. .:::::。:::........ . .::::::::::::::::: _ i/ = =ヽi :::::::::::::。::::::::::: . . . ..::::
:::: :::::::::.....:☆彡:::: //[|| 」 ||] ::::::::::゜:::::::::: ...:: :::::
:::::::::::::::::: . . . ..: :::: / ヘ | | ____,ヽ | | :::::::::::.... .... .. .::::::::::::::
::::::...゜ . .::::::::: /ヽ ノ ヽ__/ ....... . .::::::::::::........ ..::::
:.... .... .. . く / 三三三∠⌒>:.... .... .. .:.... .... ..
:.... .... ..:.... .... ..... .... .. .:.... .... .. ..... .... .. ..... ............. .. . ........ ......
:.... . ∧∧ ∧∧ ∧∧ ∧∧ .... .... .. .:.... .... ..... .... .. .
... ..:( )ゝ ( )ゝ( )ゝ( )ゝ無茶しやがって… ..........
.... i⌒ / i⌒ / i⌒ / i⌒ / .. ..... ................... .. . ...
.. 三 | 三 | 三 | 三 | ... ............. ........... . .....
... ∪ ∪ ∪ ∪ ∪ ∪ ∪ ∪ ............. ............. .. ........ ...
三三 三三 三三 三三
三三 三三 三三 三三
313:デフォルトの名無しさん
08/05/26 21:08:24
>>309
それはあくまで「趣味の範囲」での大規模ですね、わかります
314:デフォルトの名無しさん
08/05/26 22:10:17
>>313
GUIです。
315:デフォルトの名無しさん
08/05/26 22:22:10
GUI使ってれば大規模?
316:デフォルトの名無しさん
08/05/26 23:20:17
ひょっとすると、GUIフレームワークを開発中なのでは?
317:デフォルトの名無しさん
08/05/26 23:54:12
>>316・・・それはないだろう
>>314普通のGUIアプリならDでもいいけど
Dの利点は優れた構造化能力と何よりフロンティアであることです
実務を楽にこなしたいならC#の方がいいよ
318:デフォルトの名無しさん
08/05/27 10:37:03
>>309
答えるのが難しい質問だね。
言語仕様自体は、コード解釈で微妙な誤解が起きたりしないよう
注意が払われてるなど、大規模開発を意識したものになってる。
しかし現状では、処理系やライブラリの熟成度に不安がある。
319:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/27 15:11:58
public override int getint()
{
return super.getint;
}
これじゃ駄目な理由は何?
321:デフォルトの名無しさん
08/05/27 16:06:32
>>320
いえ、それで結構です。super.で呼べるのですね。
それを知らなくて return super(); とかいろいろやってました。
ありがとうございました。
322:デフォルトの名無しさん
08/05/27 16:39:58
TinyXMLはObjectのメンバを再定義してる部分が多くて
全部hiddenなんとかのエラーが出てしまう
alias Object.print print;
public void print() {}
て全部やらないのいけないよね?
めんどいけどしょうがないのかな
323:デフォルトの名無しさん
08/05/27 20:51:13
D言語とC++0xって闘ったらどっちが強いんですか!?
324:デフォルトの名無しさん
08/05/27 20:57:58
純粋な疑問なんだけどプログラム言語の世界で「○○言語最強」とか言ってる連中って何がしたいの?
「強さ」の基準からしてまったくわからんのだけど。
325:デフォルトの名無しさん
08/05/27 21:05:12
作者と信者がガチの喧嘩をしたらどっちが勝つかという問題だろう。
Dは少数派だから厳しいだろうな。
326:デフォルトの名無しさん
08/05/27 21:13:40
D教祖の筋肉とチーマObjective-C信者の飛び道具がマジノ攻防戦?
327:デフォルトの名無しさん
08/05/27 22:24:34
でもDは大砲も跳ね返すんだぜ?
URLリンク(www.kmonos.net)
328:デフォルトの名無しさん
08/05/27 22:51:58
すげぇwwwwwwwwwwwwwwwwwww
D言語使わせてくれwwwwwwwwwwwwwwwwww
329:デフォルトの名無しさん
08/05/27 23:02:19
D事態が弾を内包しているという罠・・・
330:デフォルトの名無しさん
08/05/28 00:16:40
その弾丸と親和性が高いのではねかえせるのですね。わかります。
331:デフォルトの名無しさん
08/05/28 00:39:32
DでBasicっぽいゲームエンジン作ろうかと思ってるのだがやめておいたほうがいいだろうか・・・
332:デフォルトの名無しさん
08/05/28 00:45:54
D言語で最新のDirectX SDKを叩ける方法の方が…
333:デフォルトの名無しさん
08/05/28 02:15:29
>>331
いや、やってみてから挫折しろよ
334:デフォルトの名無しさん
08/05/28 05:49:30
>>332
最新に完全対応かどうかはわからないけど
DSourceにあるBindingsで叩ける
最新SDKとリンクさせてるけど、いまのところ問題ない。
335:デフォルトの名無しさん
08/05/28 06:27:21
>>324
何がしたいっていうか、そういう遊びだろう。
勝敗の決まらない、操作そのものを楽しみ続ける格闘ゲームみたいなものだから、
基準がまったく定まらず、お互いにまったく噛み合わないこと自体も
彼らの求める相互排他とか衝突を生み出すいいきっかけなんだよ。
336:デフォルトの名無しさん
08/05/28 07:27:03
>>327
なんでD言語のキャラクターはこんなにムカつくんだwww
337:デフォルトの名無しさん
08/05/28 08:51:39
>>334
まじ?Bindingsってなんか依存関係でコンパイラがエラーはくんじゃなかった?
338:デフォルトの名無しさん
08/05/28 11:11:11
ロゴがある言語って少ないんだからあのロゴキャラ消してもいいような…
339:デフォルトの名無しさん
08/05/28 11:20:34
日本以外はサマータイムやってるから理論はいかがなものかと。
ウザカワキャラってことで売り出していこうぜ,
340:デフォルトの名無しさん
08/05/28 11:41:16
>>337 そんなのとっくに直ってる
341:デフォルトの名無しさん
08/05/28 13:57:47
GDI+ の D言語へのポートってないんですか?
自分でシコシコ作るしかないのかな…
342:デフォルトの名無しさん
08/05/28 14:33:41
大規模やらDirectX10やら、やたら勇者がおおいな
343:デフォルトの名無しさん
08/05/28 15:44:21
そう言えば日本のサマータイム導入はどうなるんだろう。
他の導入済み都市と比べて夏と冬の日照時間にほとんど差がないから意味がないような。
また政治家の手続き遊びによる金稼ぎが。
344:デフォルトの名無しさん
08/05/28 20:29:27
毎年、切り替えの日に仕事遅刻するのが目に見えてるからやめてほしい。
345:デフォルトの名無しさん
08/05/29 15:41:17
なんの話だよ
346:デフォルトの名無しさん
08/05/29 15:58:53
サマータイムの話では。
347:デフォルトの名無しさん
08/05/29 21:01:28
DigitalMars のサイトが……
348:デフォルトの名無しさん
08/05/29 21:29:54
と思ったら蘇ってた
349:デフォルトの名無しさん
08/05/29 21:49:18
一瞬だけ変なところ飛んだんだが、何事だったんだろうな
350:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/30 01:15:26
>>350
.zipで上げてくれたら誰かやってくれるかもしれんよ
352:デフォルトの名無しさん
08/05/30 02:15:14
SDL + opengl opengluなら普通に使えるけどglutは試してないなぁ。
353:デフォルトの名無しさん
08/05/30 02:33:11
>>350
DLLがあるなら、implib /s glut32.lib glut32.dllでいいと思うのだが
354:353
08/05/30 03:51:53
よく調べたら、extern(Windows)な関数のライブラリだった。
↑は使えない。
まずURLリンク(www.xmission.com)からvc++用のバイナリを落としてくる。
それから、glut32.libをcoffimplib.exeでOMFライブラリに変換して、
それを使えば大丈夫なはず。
355:353
08/05/30 04:06:26
あと、glutInitの宣言にextern(Windows)がついてないと思われるので、付けるように。
というか、むしろこっちが原因かも。
libファイルがどうこうじゃなくて。
yaneSDKに入っているものでも大丈夫だったし。
356:353
08/05/30 04:23:03
>あと、glutInitの宣言にextern(Windows)がついてないと思われるので、付けるように。
extern(C)をextern(Windows)に変えろって意味ね。
357:デフォルトの名無しさん
08/05/30 04:37:31
世話焼き萌え。
358:350
08/05/30 11:55:05
>>355
extern(Windows)をつけたらできました。
レスくれた方ありがとうございます。
勉強になりました
359:デフォルトの名無しさん
08/05/30 12:50:34
GLでがりがりやってる方もいるんだねぇ・・・
360:デフォルトの名無しさん
08/06/01 01:29:20
さて、IDEはまだかね?
361:デフォルトの名無しさん
08/06/01 01:44:58
っ Descent
362:デフォルトの名無しさん
08/06/01 23:05:09
つ Entice Designer
363:デフォルトの名無しさん
08/06/01 23:07:13
っ SASI
364:デフォルトの名無しさん
08/06/02 02:32:17
っ Poseidon
365:デフォルトの名無しさん
08/06/02 06:30:29
JDT並みの自動補完がほすい
366:デフォルトの名無しさん
08/06/02 08:12:34
つ Descent
・・・より優れているのか?
367:デフォルトの名無しさん
08/06/02 08:40:13
Descent はすぐに自動補完がぬるぽで落ちて、自動補完聞かないただのエディタと化してしまうからいまいち。
他はしらん。
368:デフォルトの名無しさん
08/06/02 11:37:16
そんな現象なったことないな
369:デフォルトの名無しさん
08/06/02 13:03:41
昔のVisualStudioはよくそんなことなってたよなw
Descentでなったことはないわ。
370:デフォルトの名無しさん
08/06/03 03:28:47
DescentでMake使えるようにならんかなぁ
371:デフォルトの名無しさん
08/06/03 03:34:26
と思ったらEclipseのBuilderから普通に使えた
372:デフォルトの名無しさん
08/06/04 21:37:39
mixin(import("con"));
これ通らないのかよー
373:デフォルトの名無しさん
08/06/04 21:42:58
>>372
-J.
374:デフォルトの名無しさん
08/06/04 22:12:58
それしてもコンパイルは通ったように見えるけど、実際は何も生成されない。
375:デフォルトの名無しさん
08/06/04 22:14:13
何も生成されない、というか空文字列として扱われてるみたい。
376:デフォルトの名無しさん
08/06/05 08:25:02
>-J.
これがなんかの絵文字かなやんだおれは
修行がたりない
377:デフォルトの名無しさん
08/06/05 15:40:40
>:-J.
378:デフォルトの名無しさん
08/06/05 20:39:49
|| -J. |
- ノ
379:デフォルトの名無しさん
08/06/05 21:33:30
||||
-J
o/
380:デフォルトの名無しさん
08/06/06 08:02:35
やってることが暇人すぎてわろた
381:デフォルトの名無しさん
08/06/06 17:40:20
何か建設的な話題はないのか
382:デフォルトの名無しさん
08/06/06 20:03:30
2010年にD++が出る
383:デフォルトの名無しさん
08/06/06 20:17:42
D#とDavaとDoberonも出るよ
384:デフォルトの名無しさん
08/06/06 20:42:15
DaskellとかDCamlとかDispに期待。
385:デフォルトの名無しさん
08/06/06 20:51:46
DOBOLだな
386:デフォルトの名無しさん
08/06/06 20:53:36
最近はバグ取れてきた?
そろそろ本格的に使ってみようかと思うんだが(趣味でだけど)
JavaとRubyに慣れた身にはC++は苦痛・・・・・・代替言語が欲しい
387:デフォルトの名無しさん
08/06/07 03:58:32
javaに慣れてるならライブラリが薄いこと以外はスーパーセット的に使えるだろ
rubyみたくクラスに機能をインジェクションしようと考えてテンプレートをいじる遊びもできるし
388:デフォルトの名無しさん
08/06/07 11:02:13
>>386
バグは普通に使う分にはすでにあまり問題ないレベルであるように感じる。
趣味で追いかける分にはD言語は愉快な言語だと思う。
389:デフォルトの名無しさん
08/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
08/06/07 15:23:42
>>387-388
ありがと。何よりもまず使ってみる
391:デフォルトの名無しさん
08/06/07 16:44:05
質問。
template hoge(int hage) {
void hogefunc() { ... }
}
void func(int arg) {
mixin hoge!(arg);
hogefunc();
}
って、どう展開されるんですか?
392:デフォルトの名無しさん
08/06/07 16:47:00
argはコンパイル時定数じゃないからテンプレートに渡すことはできない。
393:デフォルトの名無しさん
08/06/07 17:21:15
でもコンパイルとおっちゃうんですよねー・・・。
不定値になるのかな?
394:デフォルトの名無しさん
08/06/07 17:28:14
バグでしょ。
395:デフォルトの名無しさん
08/06/08 07:59:20
CTFEが働いているとかはないのか
396:デフォルトの名無しさん
08/06/08 10:29:42
>>391
何故か0が渡されてる
URLリンク(codepad.org)
397:デフォルトの名無しさん
08/06/08 12:24:22
typedefで初期値を変えても0が渡されてるからint.initですら無いようだねぇ。
398:デフォルトの名無しさん
08/06/08 14:35:15
>>395
CTFEにしても、関数はランタイムでも実行できないとだめだから、
コンパイルが通るのがおかしい。
399:デフォルトの名無しさん
08/06/08 18:03:26
既出のバグなのかな?
あの大量のリストを全部確認するのはつらいよなあ…
1000近くあるし英語だし…
というかこれも結構重複とかしてるんだろうなぁ…
400:デフォルトの名無しさん
08/06/08 19:06:25
連想配列をイテレートする便利クラスってなかったっけ?
キーの大きい順にとか、値の小さい順にとかやりたいんだけども。
401:デフォルトの名無しさん
08/06/09 00:03:47
しっかりしたライブラリなら、
dsss build --doc
でドキュメントが生成できるのな。知らなかったぜ。
dsss net install は未だに成功した試しがないんだがw
402:デフォルトの名無しさん
08/06/09 08:04:55
dmdとcandydocで作るのと一緒のやつだっけ?
そういえばdmd -doc使ってないなあ
プロファイラとコードカバレッジとユニットテストが
dmdでできるのは重宝しているが
403:デフォルトの名無しさん
08/06/09 10:45:14
>>400
foreach (v; aa.keys.sort) {...} とかじゃ不足?
404:403
08/06/09 10:48:26
微妙に間違えた。
キーで回すんだから foreach (k; aa.keys.sort) と書かなきゃ。
405:デフォルトの名無しさん
08/06/09 14:45:00
値でソートしたり、値が一致したときにキーにフォールバックしたりしたいの。
406:デフォルトの名無しさん
08/06/09 16:03:57
>>404
まだ微妙じゃないのか?
foreach (v, k; aa.keys.sort) じゃね?
>>405
>フォールバック
ちくしょう、おいらにゃ意味がわかんねぇ
407:デフォルトの名無しさん
08/06/09 20:01:16
>>406
書くならこうだろう。
foreach (i, k; aa.keys.sort)
408:デフォルトの名無しさん
08/06/10 02:19:56
今無性にimport文でワイルドカード使いたい。Javaみたいに。ニュースグループではそんな無駄な
機能いらねぇよ派が多数だったみたいだけどな。Tango のライブラリとか細かすぎていちいち
書くの面倒になっちゃうよ。DFL みたいに all.d みたいなファイルを用意しておけば、まぁ
似たようなことはできそうなんだけど。
409:デフォルトの名無しさん
08/06/10 02:45:53
Tangoにもまとめてimportする用のモジュールあるじゃん。
410:408
08/06/10 03:40:56
…あ。tango.group なんてあるのね。>>409 のお陰で得した気分だ、ありがとう
411:デフォルトの名無しさん
08/06/11 04:09:13
処理速度ってC++より早いのか?
412:デフォルトの名無しさん
08/06/11 08:37:58
また馬鹿げた質問を
単純ループのベンチマークでもとって比べるか?w
413:デフォルトの名無しさん
08/06/11 08:49:25
処理速度気にするなら単純なコードでコンパイルして逆汗して比較汁
コンパイラの出来も同時に判る
組み込みやってた知り合いはそれやってたらできたてのコンパイラのバグみつけた
414:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/06/11 13:33:38
metastringsのソース見れば分かるけど返ってくるのはconst char[]なので,
stringでは受けられないんじゃないかなぁ(実際はconst(const(char[]))かな).
使うときはいつもautoなので気にしてなかった.
それと,Formatの中ではchar[]で分岐してるので,
ここをconst char[]に修正しないとまともにフォーマットされない.
416:デフォルトの名無しさん
08/06/11 20:46:29
Formatはconst/invariant導入されてから壊れっぱなしだな。
めったに使わないから不自由はしてないけど
417:デフォルトの名無しさん
08/06/11 22:23:07
trunkにあるから書き換えてくれていいよ!
418:デフォルトの名無しさん
08/06/12 12:28:58
D言語楽しい!
419:デフォルトの名無しさん
08/06/12 14:41:53
さいきんBill Baxterさんが本家メイリングリストに出てこないなぁ。
お忙しいのか?
420:デフォルトの名無しさん
08/06/12 21:27:19
>>418
The old collection package will be deprecated prior to Tango 1.0.
こういうところがだろ?wwわかります。
421:デフォルトの名無しさん
08/06/13 01:09:15
URLリンク(www.dsource.org)
これか
なんでいきなりそんなことになんのよw
あまりにもbetaがbetaとして機能してねえw
422:デフォルトの名無しさん
08/06/13 01:11:20
D言語使いには勇者が多いw
423:デフォルトの名無しさん
08/06/13 14:05:08
linux版のThreadクラスって、処理が終わってもリソース開放しないのな
Threadクラスはガベコレが見てるから、別クラスを作るわけにもいかないし
phobos書き換えないと使えないってどんだけ
std.fileもなんかおかしいし
linux版ってもしかしてだれも使ってない?
windowsから移ってきてみたら、びっくりだ
424:デフォルトの名無しさん
08/06/13 15:36:39
たまにはソースとか読んでみようと思ったのに、
コンパイラにくっついてるのってひょっとしてフロントエンドの部分だけ?
コード生成とか最適化とかの部分はどっか別のところにある?
425:デフォルトの名無しさん
08/06/13 16:10:26
>>424 その辺はdmcと共有してて非公開だったと思う
426:デフォルトの名無しさん
08/06/13 16:24:39
>>424
フロントエンド部分だけがGDC用に公開されてる。
427:デフォルトの名無しさん
08/06/13 18:58:39
URLリンク(www.dsource.org)
みれないようわーん
428:デフォルトの名無しさん
08/06/13 20:35:38
>>427 もう見える
429:デフォルトの名無しさん
08/06/14 02:14:13
dsource.org の鯖はあんまり栄養状態が良くないよな。鯖そのもの
だけじゃなく、プロジェクトも abandoned なのが多いし。
430:デフォルトの名無しさん
08/06/14 02:34:32
windows やら unix やらばかりじゃなくて、
組み込みとかにも目を向けて欲しいんだが。
431:デフォルトの名無しさん
08/06/14 02:37:06
組み込みでGCやなんやはオーバースペックじゃないか?
まあ、最近は組み込みっていってもWindows動いてたりするけどさ。
432:デフォルトの名無しさん
08/06/14 02:41:09
最近の言語では一番組み込みに適用できそうな予感
ある程度のスペックのあるターゲットになるだろうけど
433:デフォルトの名無しさん
08/06/14 07:51:10
>>429
終わってるプロジェクトとそうでないものを区別して欲しいな
最終更新日時でソートするだけでもいいけど
434:デフォルトの名無しさん
08/06/14 11:44:06
tango、現trunkにて、tango.util.logパッケージでも破壊的な変更が…
いいぞ、もっとやれ(笑)
435:デフォルトの名無しさん
08/06/14 13:55:46
うぉるたんからして破壊的な変更大好きだし。
436:デフォルトの名無しさん
08/06/14 14:06:52
D好きはマゾですか
437:デフォルトの名無しさん
08/06/14 14:12:28
破壊的な仕様変更は普及してない時期にしかできないw
438:デフォルトの名無しさん
08/06/14 14:27:41
つまりDはいつまでも破壊的に変更できるわけですね!
439:デフォルトの名無しさん
08/06/14 15:32:35
プロトタイプは一旦作ってソースを捨てるのが
正しい方法らしいからいいんじゃねw
440:デフォルトの名無しさん
08/06/14 20:10:22
>>439
金と時間に余裕がなきゃできないけどなw
一度やってみたいよ。
441:デフォルトの名無しさん
08/06/14 22:27:46
>>439,440
ありがとう、やってみる。
442:デフォルトの名無しさん
08/06/15 01:11:12
>>441 何をだろう・・・
443:デフォルトの名無しさん
08/06/15 01:26:51
>>441はうぉるたん
444:デフォルトの名無しさん
08/06/15 01:35:24
TangoがDの命名規則に従う伏線とか…
445:デフォルトの名無しさん
08/06/15 01:45:37
>>443
やめてくれww
446:デフォルトの名無しさん
08/06/15 08:48:48
tango.text.Regex の正規表現のコンパイルの遅さに萌え
447:デフォルトの名無しさん
08/06/15 10:09:02
gdc on MinGWのビルドがうまくいかん。
2.x系が使いたいんだが、
最近のバイナリってどっかにないかな?
448:デフォルトの名無しさん
08/06/17 01:04:51
をるたんそろそろ更新をあたえてくれ~
449:デフォルトの名無しさん
08/06/17 02:03:08
tango.text.Regexがdebugビルド不可なのは、何の意図なのだろうか
450:デフォルトの名無しさん
08/06/17 02:03:47
debugなんてのは臆病者のやることだ。
451:デフォルトの名無しさん
08/06/17 04:21:22
臆病者と馬鹿者のどっちになるかってことだな。
452:デフォルトの名無しさん
08/06/17 11:54:06
うぉるたんやプロパティの+=はまだかいの
453:デフォルトの名無しさん
08/06/18 12:08:26
さっき食べたでしょ
454:デフォルトの名無しさん
08/06/18 13:50:05
C++のstd::vectorぽいことをしたいのですが
動的配列+phobosのalgorithmで頑張る?
→push_backしたい。
→remove_if等が存在しないような?
tangoのcollectionを使う?
→sortやremove_ifをしたい場合、toArrayで配列にしないと無理?
→stable_sortが存在しないような?
いまいちこれだという方法が無い気がするのです。
なにか良いライブラリ等ありますでしょうか。
455:デフォルトの名無しさん
08/06/18 21:47:21
→push_backしたい。
int[] a;
a ~= other;
→remove_if等が存在しないような?
2.x系なら
URLリンク(www.digitalmars.com)
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:デフォルトの名無しさん
08/06/18 22:30:55
Version D 2.015 Jun 17, 2008
PICマイコン対応…と夢想しかけた。
457:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/06/18 22:44:30
(1) auto func(T)(){ return 1; }
(2) auto func(){ return 1; }
(1)は通るのに(2)は通らない。けち臭いなあ
459:デフォルトの名無しさん
08/06/18 22:57:25
auto func()(){ return 1; } でおk
460:デフォルトの名無しさん
08/06/18 22:58:50
ああ、テンプレートはパラメータなしでもよかったのか。
でも、ばっちいお…
461:デフォルトの名無しさん
08/06/18 23:29:31
戻り値の型推論!!
でもなんで無名関数とテンプレートだけなんだ
* Added Constraints to templates.
これは何かすげーなw
462:デフォルトの名無しさん
08/06/18 23:32:20
テンプレートの型推論のルーチンを
使い回すのが難しいコードになってるとか邪推。
463:デフォルトの名無しさん
08/06/18 23:51:41
無名関数の戻り型推論って結構まえからできなかったっけ?
464:デフォルトの名無しさん
08/06/19 00:01:38
そだね
今回できるようになったと言ってるわけじゃないんだわ
465:デフォルトの名無しさん
08/06/19 00:14:16
auto f()(){
typeof(return) a;
return a;
}
void main() {
f();
}
コンパイラしんじゃうよー
466:デフォルトの名無しさん
08/06/19 01:03:34
Constraintにキーワードifつかっちゃったのか。
なんか気持ち悪いな
467:デフォルトの名無しさん
08/06/19 01:37:43
予約語はできるだけ増やさない、みたいな方針があるのかな。
前から結構使いまわしてるよね。
468:デフォルトの名無しさん
08/06/19 02:05:49
ちょっとlibpngが使いたいと思ってポートがあるかなと思って検索してみたら、
こんなスレがひっかかってちょっとワロタ
D言語でエロゲーつくって
スレリンク(gamedev板)