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/
830 名前:802 mailto:sage [2007/11/11(日) 20:46:36 ] >>806 , >>807 , >>815 予想してた斜め上の回答がきててワロタ 構文解析とか意味解析とか知らないくせに左結合とか右結合とか 結合規則だけでコンパイラ語ってんじゃねぇ、ヴォケw 例えば、hoge モジュールの中に foo クラスがあって、bar っていうメソッドがあったとして、 hoge.foo.bar っていう字句列が何を意味するか分かる?
831 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:50:39 ] >>830 何にも分かってないのはお前だけー
832 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:53:06 ] やれやれ、結局煽るだけか。 まぁ、納得できないんじゃなく、理解できないんだからしょうがないが。
833 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:55:24 ] >>832 つーかさ、なんで>802クンは>830で突然戻ってきた風なくせに、 突然>830でキレ気味に「ヴォケ」とかあおってんの? そんなに悔しい出来ことがあったのですかー?
834 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:57:09 ] はいはい、ごめんねー
835 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 20:57:40 ] やれやれ、反論できずに非を認めて謝っちゃったか。最初からそうしとけばよかったのにな。
836 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 21:00:09 ] うん、そうだね^^
837 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 21:01:23 ] どうやらようやく理解できたようで。めでたしめでたし。
838 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 21:02:32 ] はい
839 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:11:43 ] わかったふりしたい時は 偉そうにクイズ出してごまかすに限るよな。
840 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:12:29 ] 上はじゃじゃ馬下はヘボ これなーんだ?
841 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:23:20 ] ちんこ
842 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:38:35 ] まあ>>833->>841 は俺の自演なんだけどねー
843 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:49:47 ] >>842 自演ってことにしたいの?そんなに悔しかったのかい?
844 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:26:43 ] >>843 オマエガナー
845 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:27:48 ] 無駄なレスで消費するなよな・・・ と言うとこのレスも無駄だろと言われるんだろうけど。
846 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:31:37 ] >>842-845 自演乙
847 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:31:48 ] 糞スレのいい再利用法だな
848 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:10:00 ] >>846 くやしいのうwwwくやしいのうwww
849 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:58:02 ] アイタタタタタ・・・ 今日は802は悔しくて眠れないだろうなこりゃ。
850 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:59:36 ] 悔しがることかどうかもわかってないから大丈夫
851 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:59:39 ] なんかスレのレベル下がったな
852 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:01:42 ] 俺のおかげだな。
853 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:44:38 ] >>848 自演乙
854 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:51:56 ] >>848 =849 いい加減にしたらどうだ? そこまでして勝ち誇りたいかね
855 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:04:02 ] まだうだうだやってたのか。 せっかく俺が>>834 を書き込んでやったというのに。
856 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:13:06 ] でもそんなの関係ねー
857 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:20:07 ] 本当に悔しくて眠れないって、うけるwwwwwwwwwwwwwww
858 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 02:21:06 ] いい加減に寝ろww
859 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 06:01:30 ] おはよう諸君。 最後に書き込んだやつが、悔しくて最後まで起きてた奴ってことでいいかね?
860 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 07:33:14 ] みんなみんな>>802
861 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 09:22:08 ] >>859 悔しくて、朝一番に書き込んじゃったお前が NO.1だよ。寝てないんじゃない?
862 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 10:27:38 ] 下らない流れで加速させてもなあ(´・ω・)
863 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 10:53:31 ] lazyって何につかってんのww
864 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 12:32:11 ] >>859 おはよう>>802
865 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 13:18:39 ] >>863 lazyとか、macroが導入されたら使い物にならなくなりそうな気がするな。 いまでもdelegateとか使えば表現できるし、使い道的にはぶっちゃけいらないんじゃね? 最適化のために使われたりするのかなぁ… >>864 もういい加減その話題引っ張るのやめようぜ。
866 名前:デフォルトの名無しさん mailto:sage 願わくは俺再帰で無限ループ [2007/11/12(月) 18:00:38 ] 引っ張れば引っ張るほどそいつの悔しさが露呈するという事実
867 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:21:08 ] >>866 やめようぜ、頼むよ。 再帰には終了条件を設定すべきだろ。
868 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:25:41 ] 終了条件はスタック溢れて例外飛ぶまででおk
869 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:56:51 ] 末尾最適化されて無限ループに
870 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:31:00 ] auto D言語_Part15 = std.thread.getThis; D言語_Part15.pause;
871 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:52:44 ] 何をどう書き込んだって俺の勝ちなんだから、 もう諦めようよw
872 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:13:26 ] じゃ俺も勝ちで
873 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:16:29 ] じゃあ俺は負けで
874 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:56:52 ] 何の祭かと思ってスレ開く前に公式すっ飛んでった俺涙目
875 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:13:13 ] DSSS つかってみたんだけど dsss build でexeファイルができない・・・ 1>Creating imports for DD-Debug 1>Creating imports for DD-dsss_objs 1>Debug => DD-Debug 1>WARNING: Section Debug has no files. 1>dsss_objs => DD-dsss_objs 1>WARNING: Section dsss_objs has no files. ってでます。 dsss build main.d ってやればできるんだけど ルートディレクトリでコマンド一発ってのがdsssの機能をつかいたいです
876 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:40:31 ] dmd 2.007で void hoge(void delegate() func){ func(); } void main(){ hoge({goto End;}); End: return; } をコンパイルするとError: label End is undefinedってなるのと mainのreturn;をはずすと(ラベルの後がすぐ}だと)エラー出すのは仕様通り?
877 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:51:03 ] ラベルの後ろには文がないといけない。 End: ; ってしてみるといい。
878 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:58:46 ] >>876 gotoで飛べるのは同じ関数の中のラベルだけで、 関数から飛び出したり別の関数へ飛び込んだりは出来ないよ。
879 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 01:38:38 ] >>874 (´;ω;`)ぶわっ
880 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 05:34:50 ] 継・・・続・・・?
881 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:50:38 ] 継続はいらね
882 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:03:08 ] あのさ、1系列はもういらない子なの?
883 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:32:21 ] まぁ、一度もまともに固まったことのない言語に安定版の3文字など存在しないから、 1.xは実質的には、単なる「試行錯誤の跡地」であり、要らない子かもしれないな。 そこに何かを求めるのは、ついうっかりDの安定性に賭けて何か作っちゃった人くらいだな。
884 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:13:01 ] 今ふと気づいたんだけど、-v1オプションていつからか消えてる?
885 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:13:12 ] >>883 ヒドスwwwww でもそんな感じだな・・・ 2.0もそうなるんだろうな・・・
886 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:19:54 ] >>884 2.xには最初からなかったと思うけど 1.xにもなくなっているのかな
887 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:22:54 ] C♯も3.0出るしな
888 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:26:53 ] >>884 2.001から
889 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:48:23 ] unrecognized switch '-debuglib=tango-base-dmd.lib' Tango入れたらこんなん出てきたんですが、 これはどっか設定変えないと駄目なんでしょうか。
890 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:52:02 ] DMDが古いんじゃね?
891 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 00:41:19 ] 入れてる dmd が古くて -debuglib オプションを持ってないんだろう
892 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 00:52:35 ] omg そうだったんすか。 ありがとうございました。
893 名前:デフォルトの名無しさん [2007/11/15(木) 02:07:06 ] 既出してたらゴメ。dmd2.007(win)で import std.stdio; void main() { auto A = new Object(); auto B = A; delete A; delete B; writefln("end of process"); } を実行すると、end of processは表示されるけど、 プロセスが終了しないんだが、 1.そういうことしちゃだめ。 2.今、gcがもっすごがんばってるからもうちょい待て。 3.delete式なんてただの飾りですよ。エロい人にはそれが分からんのです。 4.バグだけど直すほどの価値がない。 どれ?
894 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 02:15:54 ] テキトーなクラスつくってデストラクタにwritelnでも入れとけば確認できるんじゃないでしょうか。
895 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 02:19:45 ] ていうかよく見たら参照元がdeleteされたあとさらにdeleteしてるんすか。 これはやっちゃだめでしょう。
896 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 04:25:33 ] 気になって眠れないので調べたら、 「ポインタ、動的配列、参照変数は、 delete のあと null にセットされます。」 と言う一文が。 しかしこの場合nullがセットされるのは参照変数としてのA自体で、 Aの実体を参照してた参照変数のBはそのまんま(つまりゴミ参照してる)じゃないでしょうか。 なのでやっぱり複数の参照変数で参照されてる大元消したあとにdeleteするのはまずいかも。
897 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 09:24:20 ] >>893 www.kmonos.net/alang/d/expression.html#DeleteExpression > それ以外の場合はガベージコレクタが呼び出され、 > インスタンスに割り当てたメモリは直ちに解放されます。 とあるから、 delete A; でBが無効な参照になるのは確実だと思う。 ただ、解放済み(だけどもともとGCで確保した)領域への参照に対する deleteについては仕様に言及がないと思うので、これは実装依存だと思う。 (つまり、実装によっては未定義動作となる可能性もあるということ) 実装依存となると、実装がどうなってるか分からない(今回の場合)なら やっちゃ駄目な操作(選択肢の1)になるかな。
898 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:19:41 ] ソースのどこで例外出してるか調べる方法ってありませんか? dfl使ってツリービューとかにドラッグオーバーを何度か繰り返すと 例外吐くんですが、それがどこなのかわかりません。
899 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:59:14 ] flectionedってそういうことできたっけ?
900 名前:893 [2007/11/15(木) 16:09:45 ] >>894-897 あ、やっぱそっか。さんくす。 どうも4から疑ってしまう自分がいて、反省。 でも、例外とか吐いてくれるような仕様にならんかなあ。
901 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 17:18:37 ] >>899 あれはTangoが無いと動かないみたいで。 dflとTangoの組み合わせは自分でやった限りでは出来なかったので。
902 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 20:52:50 ] ddbg ttp://ddbg.mainia.de/
903 名前:デフォルトの名無しさん [2007/11/15(木) 21:26:28 ] 突然でアレなんだけどさ、これ module a; private import std.stdio; module b; import a; void main() { std.stdio.writefln("hello"); } >dmd b.d a.d が通るって初めて知ったんだけど、キモくね?
904 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:32:41 ] きもいね
905 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:34:31 ] きもいけどどういう挙動が正しいのか仕様にはっきりと書いてないね。
906 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:43:37 ] www.kmonos.net/alang/d/module.html >デフォルトでは、import は private です。 >これは例えば モジュール A がモジュール B を、 >モジュール B はモジュール C をimportしていた場合、 >Cの名前はAでは探索されないということです。 >ただし、 import を特別に public と宣言すると、 >その import が取り込むモジュール内の全ての名前が、 >現在のモジュールを外からimportするモジュールにも見えるようになります。 未定義になるべきなのでは もしかして実はデフォルトがpublicなのかなーとか思って明示的にprivate import aにしてみたがやっぱり通るね。
907 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:09:59 ] バグじゃない?
908 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:00:36 ] >>903 それ、モジュールAとimport a;が無くても通るんだよね。 だから、仕様だと思ってた。 フル修飾だとimport不要、みたいな。
909 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:01:33 ] それだとstatic importの立場がなくなるがな
910 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 07:49:58 ] 8ビットのビットマップクラスをつくてるんだが、streamのFileをオープンした瞬間にアクセス違反で落ちる。 Windowsなんだけど、なんでかな〜。いまのとこ、無いファイルを作ろうとしてるんだけど。 コンソールに違反だよ〜ってでるからAPI内部の犯行ではないはずなんだけど。 あ、コンパイラのバージョンは1.015です。 bool Save(char[] name, bool IsIgnor = false){ BitmapFileHeader bmh; bmh.bfType = 0x4d42;// 'B'<<8 + 'M'; if(exists(name) == true){ if(IsIgnor == false) return false; } static if(IsDebug) writefln("file:",name); File fo; fo.open(name,FileMode.OutNew); /* if(fo.isOpen == false) return false; fo.writeBlock(cast(void*)&bmh,bmh.sizeof); fo.writeBlock(cast(void*)&bih_,bih_.sizeof); fo.writeBlock(cast(void*)Palette_,uint.sizeof*Palette_.length); fo.writeBlock(cast(void*)Pixel_,ubyte.sizeof*Pixel_.length); */ fo.close();
911 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 08:22:13 ] newせいよ
912 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 08:55:43 ] >>911 ぐあ。はずかし!またやってしまった!! くそー。癖って抜けないね。 なんにせよ、レスありがとう!!!!
913 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 18:16:10 ] aliasじゃインターフェイスを実装したものとみなされないのか…
914 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 18:53:24 ] Tangobos→Phango
915 名前:デフォルトの名無しさん [2007/11/16(金) 19:05:07 ] Phagos
916 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:15:53 ] Photangobos
917 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:21:30 ] デバッグってvs2005でもいけるんでしょうか。 vs6だとうまく行くんだけど、vs2005だと作業フォルダ指定しても ブレークポイントに反応してくれない。
918 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:21:37 ] pthaonbgoos.
919 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:46:48 ] phandango
920 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 22:20:40 ] Tanpo
921 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:16:22 ] Chi...
922 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:32:45 ] >>889 >unrecognized switch '-debuglib=tango-base-dmd.lib' 自分もその現象が発生しました。Tango 0.99.3になってそのスイッチを使い始めたみたいです。 調査の結果、rebuildが-debuglibに対応できていないのが原因のようで、dsss最新版のrebuildを使ってみてもだめみたいです… というわけで、dsssやrebuildを用いないでコンパイルするとうまくいくことがわかりました。 レスポンスファイルを作ってやるか、makeを活用するとよいかと思います。 というわけでそれを踏まえてDFL 0.96.01を使ってみたのだけど、いくつかはまったので使いたい方は以下を参考するとよいかと思います。 import\dfl\makelib.bat(23)にinternal/_stdcwindows.dを追加 import\dfl\makelib.bat(25)に_stdcwindows.objを追加 import\dfl\makelib.bat(34)の-v1を削除 でgo.batを実行してライブラリをビルドすることで解決したので参考までに載せておきます。
923 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:39:00 ] >>917 ああそういうことだったのかな 前はソースレベルデバッグできてたのにいつの間にかできなくなったと思っていたら
924 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:45:01 ] どなたかDflでドラッグドロップ系の処理が出来ている方っていますか? いたらバージョンを教えてほしいのでスが。
925 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:39:57 ] class A{ static void opBrace(void delegate() v){v();} } A{printf("brace");} みたいなのが欲しい。
926 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:44:01 ] q{} 文字列リテラルを追加しちゃったから、望み薄だな。
927 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:48:39 ] >>926 あれは、{code();}.stringof とかの方がよかったと思うのにな。。
928 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:48:48 ] tanpopo tanbo botan popotan bosan
929 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:53:37 ] >>926 a(b)があるけど、opCallもあるから大丈夫だ。
930 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:55:55 ] >>929 いや、そういうことじゃなくて…
931 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:12:34 ] q{}を無くせばおk
932 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:20:01 ] どういうことだ? printf(q{A{"huga\n"}});は通る
933 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:43:14 ] >>924 ドラッグドロップ系使う時は Application.run(...) を呼び出す前に Application.autoCollect = false; として、 頻繁にGCが走らないようにすると、とりあえず落ちるのは回避できるみたい。 必要な領域までGCに解放されてしまってるのかも…
934 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:55:40 ] 直りました! 助かりましたありがとうございました。
935 名前:デフォルトの名無しさん [2007/11/17(土) 03:21:23 ] mixin(q{aaaaaaaaaaaaaaa}); //error!
936 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 07:50:54 ] phungus
937 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 08:15:23 ] matango simeji enoki shitake
938 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 10:27:00 ] ttp://www.dsource.org/projects/tango/wiki/0_99_3_release ・DMD builds no longer generate libphobos.a/phobos.lib, but instead utilize the -defaultlib switch. This enables phobos to install side-by-side with Tango ・Also note that there is an experimental D2.0 branch in our repositories now.
939 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 11:22:11 ] ttp://www.dsource.org/projects/tango/browser/branches/experimental/D2.0
940 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 11:35:17 ] >>932 頭悪いのな。お前。
941 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:08:26 ] よく言われる
942 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:14:43 ] よく言われる932 よく言い、よく陰で思われる940
943 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 13:23:45 ] よく言われる932 よく言い、よく陰で思われる940 よく言い、よく影で思われ、それに気づかない942
944 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 14:17:02 ] class q{ static string opBrace(void delegate() d){return d.stringof;} } class q{ static string opBrace(string s){return s;} } とかできれば、q{}はいらないと
945 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 14:58:13 ] そもそもqは何のためにあるの
946 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 15:01:26 ] mixin(q{ some_valid_code_here; });
947 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:09:11 ] >>946 ありがとう えーとじゃあ↓じゃなくて mixin("some_valid_code_here;"); そうしたい場合ってのはどんなとき?
948 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:39:11 ] 文字列と整数を合体させたい場合ってどうやるんでしょうか
949 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:43:54 ] >>947 mixin(q{ this is not valid tokens; }); // error mixin(q{ this_is_valid(); }); ってことじゃね。
950 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:49:33 ] >>948 std.conv.to!(string)
951 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:59:29 ] mixin(" this is not valid tokens; "); でもエラー出ね? 出るエラーが違うのかな
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を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。