1 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 20:16:30 ] プログラミング言語 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://www.sun-inet.or.jp/~yaneurao/dlang/ ttp://wisdom.sakura.ne.jp/programming/d/
952 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 18:12:02 ] >>951 変数に格納したりするなら、エラーの出る場所が違うな。
953 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 18:26:50 ] みんな分かってるみたいなのに q{}の意義が全然わからなくて俺涙目 >>949 それをどういうときに使うのかと
954 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 18:48:38 ] mixin て何か分かってんのかね、おまいは。
955 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:00:36 ] わかりやすく説明すると、トークン文字列 q { ... }の内部の文字列は、Dのトークンであるので、 Dの字句解析をパスしなければならない。 つまり、文字列が、Dのソースとして解釈可能であるかどうかを判別できる。
956 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:01:46 ] q{}なんてあったの初めて知った。 コードを文字列として渡すときに、ダブルクォートの中にコードを書くなんていう、 エディタ支援が受けられない(どころかむしろ邪魔になる)苦行に挑まんで済むわけね。
957 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:04:00 ] え?そうなの? 俺は、変態なことやってる場所を簡単に検索できるためだと思ってた。
958 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 19:50:02 ] import std.stdio; void main() { const a1 = "\"hoge\""; mixin("string c1=mixin(\"mixin(\\\"\\\\\\\"huga\\\\\\\"\\\")~\\\"hoge\\\"\") ~ mixin(a1);"); writeln(c1); const a2 = q{q{hoge}}; mixin(q{string c2=mixin(q{mixin(q{q{huga}})~q{hoge}}) ~ mixin(a2);}); writeln(c2); } どっちがいいかとか
959 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:19:35 ] import std.stdio; void main() { const C = q{ mixin(A) + mixin(B) }; const A = q{ a }; const B = q{ b }; int a = 10; int b = 20; writeln( mixin(C) ); } こんなことできたりとか
960 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:39:42 ] なんという遅延評価…
961 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:49:09 ] import std.stdio; void main() { const s = q{mixin(s)}; writefln(mixin(s)); }
962 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 20:59:16 ] q{}はmixin用ってことでおk?
963 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 21:00:15 ] import std.stdio; alias string symbol; template add(symbol o, symbol v) { const add = `mixin( q{`~o~`} ) + mixin( q{`~v~`} )`; } void main() { const c = add!(q{a},q{b}); int a = 10; int b = 20; writeln(mixin(c)); a = 100; b = 200; writeln(mixin(c)); }
964 名前:953 mailto:sage [2007/11/17(土) 22:21:54 ] >>954 mixinは大丈夫 他のレスは後で試してみます なんか分かりそう ありがとん
965 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 03:48:38 ] べつに構文はvalidじゃなくとも字句だけDの範疇ならOKだよね? q{int int class class invalid;}とかやっても大丈夫だし。
966 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 04:33:28 ] 実行時mixinないかなー
967 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 04:39:23 ] opStarAssignマダー
968 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 07:46:51 ] 亀ですまんけどちょっと質問>>542 どうやって? int a,b,c; Tuple!(a, b, c) = Tuple!(10, 20, 30);とかって無理じゃね?
969 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 09:04:33 ] >>968 template Tuple(T...) { alias T Tuple; }
970 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 09:07:40 ] もしかしてDMD古いとできない?
971 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 11:12:39 ] >>970 1.023/2.006 でバグフィックスされてできるようになったのでそれより古いとダメ
972 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 13:26:30 ] obj[index] = value; はopAssignでオーバーロードできるけど、 obj[index] += value; みたいな複合代入をオーバーロードする方法ってある?
973 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 13:36:38 ] opAddAssign
974 名前:デフォルトの名無しさん [2007/11/18(日) 13:39:55 ] あ、配列か。 opIndexでオブジェクトを返すとか ()がいるけど
975 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 14:22:19 ] >>971 1.020使ってたよ・・・(´・ω・`) バージョンうpしたいけどgdcがなあ・・・
976 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 14:39:31 ] opIndexOpAssign opStarAssign opStarOpAssign このあたり追加して欲しい
977 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 15:00:41 ] Opってなんだ?
978 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 15:27:53 ] AddとかDivとか
979 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 15:29:19 ] opSliceOpAssign opCallAssign opCallOpAssign もお願いします!
980 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 16:26:29 ] obj(arg) = val; …さすがに要らんと思う。
981 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 16:27:55 ] obj(arg) += val; きんもーwww
982 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 16:34:26 ] perlだと関数呼び出しがlvalueになれるよな。 まあ、下駄雪駄を合わせたプロパティ的用途か、スライスへの代入の用途が主だから、 Dなら別の機能で間に合ってるけど。
983 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 16:51:25 ] opCallで内部クラスでも返せばよくねwwwww
984 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 23:02:43 ] どうぞ。 D言語 Part16 pc11.2ch.net/test/read.cgi/tech/1195394435/
985 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 08:06:43 ] あとすこしで落ちるからたわ言など。 公式で、ユーザライブラリコンテストとかやらないかねぇ。 一回総集編を作ってほしい。 現状、フレームワークは決定打ないし、グラフィックライブラリはないし、サウンドライブラリも無い。 でもなぜかZIPはあるし、細かいスパイスのきいたライブラリがそろってるのもまー事実。 Tangobosの問題もあるし、V2系のラストで是非やってほしいと結構おもてる。 問題はいつV2系が安定するかだなぁ。。。
986 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 08:23:40 ] あと15レス分は何に使うかな。
987 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 08:31:00 ] Truetypeフォントを動的ロードできて、さらに描画できたら、結構汎用性あがるかなぁ。 ファイルフォーマットの内容しらないし、ライセンスがどうなってるかは知らないけど。 プログラムの場合ってラスタフォントのほうが相性いいのかなぁ。
988 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 08:41:07 ] インターフェースの設計っていい叩き台ないもんですかね。 現状、Bitmapのインターフェースの設計をてきとーにやってるんですけど、 うまく全部(1〜32びっと)に当てはまるインターフェースが良くわからないです。 総合あーかいばプロジェクトは割りとその辺の設計が良かったから普及したようなもんだし。 なんか、いい手はないもんかなぁ。
989 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 09:04:06 ] 規制に引っかかったので自重
990 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 13:47:25 ] >>982 perlのlvalueってあれ単に参照返してるだけに見える俺は異常?
991 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 16:26:04 ] 中間言語導入による部分的な動的コンパイルの実現!
992 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 16:41:26 ] 中間言語いらんからコンパイラを標準ライブラリに(ry
993 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 16:47:31 ] >>988 よくわからんが、 void[]でビットイメージを保持しておいて、 インデクサを用いて適切に変換するようにすればいいんじゃなかろうか。
994 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 17:04:36 ] >>988 >707だけど同じ目的なので設計を話し合ってみませんか? 私はピクセルに触る部分だけ専用の関数を作って、これをピクセルフォーマットごとに変えるようにし、 それ以外の塗りとかその他は必ずその関数経由で触るように設計しました。 あとで自分がやった内容についてファイルをうpしてみます。
995 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 17:23:34 ] >>990 参照返してるだけだな。 ただの構文糖
996 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 18:17:27 ] 俺の欲しいもの: * プロパティに対する複合代入 * ラムダ式 をるたん、クリスマスプレゼントまってます。
997 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 18:33:38 ] それまで>996はいい子にしてないとな
998 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 20:28:25 ] D言語 Part16 pc11.2ch.net/test/read.cgi/tech/1195394435/l50
999 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 20:30:25 ] 次スレ D言語 Part16 pc11.2ch.net/test/read.cgi/tech/1195394435/l50
1000 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 20:30:45 ] 1000
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。