1 名前:デフォルトの名無しさん mailto:sage [2011/08/24(水) 06:02:12.35 ] プログラミング言語 D (D Programming Language) について語るスレッドです。 ■前スレ D言語 Part27 hibari.2ch.net/test/read.cgi/tech/1303022487/ ■本家 www.digitalmars.com/d/ www.d-programming-language.org/ (ドキュメント) www.kmonos.net/alang/d/ (和訳) ■コンパイラ www.digitalmars.com/d/dcompiler.html (DMD, 本家) dgcc.sourceforge.net/ (GDC, gccフロントエンド) www.dsource.org/projects/ldc (LDC, バックエンドにLLVM) ■参考URL f17.aaa.livedoor.jp/~labamba/ (D言語研究) f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF) dsource.org/ (dsource) tinyurl.com/candcpp2d2 (C/C++に疲れた人のD言語2.0) www.kmonos.net/alang/wnd/ (わかったつもりになるD言語) shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか) shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座) www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画) www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games) dusers.dip.jp (D言語友の会) www.wish.sakura.ne.jp/desuno/game/Drawing (PrincessDrawing! D言語で作られた横スクロールSTG)
640 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:14:24.01 ] 649 デフォルトの名無しさん [sage] 2011/12/29(木) 14:50:37.28 ID: Be: 学生プログラマ日本一決定戦(予選は社会人も参加可) ttp://codevs.jp/howto.html 現在予選開催中 応募締切 2012.1.6 12:00 おもしろいことやっているじゃん。誰か今から参加しろよ。
641 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 17:12:06.58 ] >>640 盛り上がってないからって あちこちで宣伝すんなよ
642 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 19:03:34.97 ] >>635 バイナリエディタでexe見てみたら、ゼロばかり並んでるw
643 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:32:50.15 ] タワーディフェンスだと・・・? codevs.jp/rule.html
644 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:40:47.22 ] Watch out, or you may attract a thunderbolt!!
645 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 22:13:18.43 ] 久々にJavaScriptで書いてみたが、コンパイル時型チェックがないのは面倒ではあるな 大規模プログラミングでこれは使えないだろうとは思った。
646 名前:デフォルトの名無しさん mailto:sageman [2011/12/30(金) 12:35:56.70 ] だが、それがいい
647 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:45:55.76 ] 近頃のDはコンパイラアップデートしても割とすぐコンパイルできる代わりに 端々で以前と違う挙動をしてアプリをバグらせてくれる これはいいものだ
648 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 13:54:14.69 ] 年内今日明日で何か作る
649 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 17:31:39.90 ] import std.xml; import std.stdio; void main() { auto doc = new Document(new Tag("root")); auto e = new Element("elem"); e.tag.attr["attr"] = `"quot"`; // '"'入りの文字列 doc ~= e; writeln(std.string.join(doc.pretty(1),"\n")); } $ dmd -run x.d <root> <elem attr=""quot"" /> </root> 以前std.xmlで属性がエスケープされないって話があって、確か直ったはずなんだけど どうして戻ってるの…
650 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 18:11:03.14 ] std.xmlってなくなるんじゃないの?
651 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 18:21:06.27 ] Cのlongと同じ型!みたいなエイリアスが詰まったモジュールとかありませんか?
652 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 19:21:53.92 ] >>650 無くなるのはいいけどいつまで経っても無くならないなぁ 代替手段ができるまではちゃんとメンテしてほしす
653 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 21:13:57.83 ] >>651 Cはプリミティブ型のバイト数決まってないから無理
654 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 21:54:49.34 ] >>653 だからこそdmcの型と対応するaliasが欲しいって話じゃね?
655 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:31:26.59 ] version か何かで分岐すれば良い
656 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:55:24.04 ] それをユーザ側でいちいち用意するのは馬鹿らしいってことじゃないの? intptr_tはあるけどな
657 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 08:00:29.16 ] 使う人いるのか、いないだろうな 他のライブラリポーティングするにしても大抵Uint8とかGLintみたいにそのライブラリ固有で型定義してるし
658 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 08:35:48.82 ] typedef long HogeLibInteger; D語に訳すにはどうすればいいんでしょうか
659 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 09:26:42.03 ] alias long HogeLibInteger;
660 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 15:51:22.55 ] typedefがオワコンになった今、今更キーワードaliasをtypedefに戻せない辺りに哀愁を感じる
661 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:02:11.71 ] 3.0に期待
662 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 16:30:12.61 ] @strong alias こんな感じで
663 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 20:10:52.35 ] どっちでもいいけどななー typedefに戻すメリットもたいしたものないし
664 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 21:16:57.34 ] typedefってJavaのgotoみたいな永久欠番になるのかな
665 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 21:18:15.30 ] 3.0開発し始めたら アンドレイ「いいこと考えた。1行で完全に新しい型を定義できる機能とか新しくね?」 ウォルたん「いいね!なぜかtypedefってキーワードが空いてるからそれ使おう」 ってなるよ
666 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 21:38:40.28 ] typedefの代わりに、structで包めばいいかな
667 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 21:55:14.94 ] 別にstrong typedefは新しい機能でもなんでもないぞ。C言語由来の型システムとはなじまないってだけで。
668 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 23:28:12.64 ] リファクタリング...ひらめき...実装...リリース!
669 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 01:23:56.49 ] 灰になった!
670 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 04:42:41.23 ] 代替手段ができるまではメンテして欲しいよな
671 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 09:48:04.67 ] 代替手段ができるできる詐欺である可能性もあるからな そろそろD言語も元年を標榜してみる?
672 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 20:42:49.91 ] -propertyへの対応で元日終わりそう
673 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 21:34:04.83 ] あれ? int func1() { return 1; } @property int func2() { return 1; } void func3(int i) { } @property void func4(int i) { } void main() { int i; // i = func1; // -propertyだとコンパイルエラー i = func2; func3 = i; // コンパイルできる… func4 = i; } これってそういう仕様なの?
674 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 05:53:20.19 ] Dって引数以外でref変数あるの?
675 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 10:10:17.53 ] >>674 関数の返り値はrefにできる。 変数自体には指定できないけど、ポインタやクラスで代替可能。
676 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 10:50:07.97 ] ありがとうございます。おとなしくポインタ使います
677 名前:デフォルトの名無しさん [2012/01/02(月) 11:24:20.97 ] ポインヨだろ 間違えるな
678 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 14:35:37.56 ] ポインティーヌ
679 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 18:08:52.92 ] >>673 https://github.com/D-Programming-Language/dmd/pull/279 パッチを出したがまだマージされていない
680 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 18:17:05.66 ] >>649 ざっとstd.xmlのコード見てみたが、 > e.tag.attr["attr"] = `"quot"`; // '"'入りの文字列 はTagクラスのpublicなattrフィールド(連想配列)に直接値を設定しているから、 encode/decodeとか何も動かない。 つまりそんな機能は元から無い様に見える。
681 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 19:20:56.52 ] Tagクラスの toNonEndString のところ decodeじゃなくて、encodeにすべきなんじゃないのか?
682 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 20:03:47.76 ] >>681 ああ、そっち(出力)の方か。確かにそこをencodeにすると、 outputがエンコードされるようになるな。 誰かbugzillaにレポート投げてくれればfixされるかも。
683 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 22:54:27.85 ] >>679 やっぱバグなのね。ありがと つまり次のバージョンでもう半分の-property地獄を体験することになるわけだな これだからDはやめらんねぇ!
684 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 00:42:58.19 ] std.xml Commentクラスのコンストラクタ内 × if (content == "-" || content.indexOf("==") != -1) ○ if (content == "-" || content.indexOf("--") != -1)
685 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 05:59:45.30 ] おお やっぱ消えると分かっていてもメンテしてくれないと困るな
686 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 06:00:41.72 ] あるいはguthubで特定のソースに対するpatchを簡単に絞り込めないのかな
687 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 14:21:43.58 ] ネスト関数に事前条件無しで事後条件書くと構文エラーになるけど、 事前条件有りで事後条件書くとコンパイル通って動くんだけど、なんか理由があるのかな?
688 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 21:12:23.26 ] >>687 手元で試したら全部通ったけど、どんなコード書いたの?
689 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 22:31:29.87 ] >>688 void main() { string foo() //in //{ //} out (result) { assert(result.length == 0); } body { return null; } } __EOF__ このままコンパイルしようとすると構文エラーで通らない。コメントアウトすると通る。 ちなみにコンパイラはDMD64(v2.057)をUbuntu向けパッケージからインストールしたもの。
690 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 22:35:18.75 ] エラーメッセージはこんな感じ d.d(7): found 'foo' when expecting ';' following statement d.d(7): expression expected, not ')' d.d(7): found 'out' when expecting ')' d.d(8): found '{' when expecting ';' following statement d.d(11): Declaration expected, not 'body' d.d(14): unrecognized declaration
691 名前:デフォルトの名無しさん mailto:sage [2012/01/03(火) 23:08:59.74 ] それ多分ウォルターの自作自演だから
692 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:21:59.25 ] >>689 パーザーの問題。DMDのパーザーは手書きだからこういう抜けが未だにある。 in/outなしでbodyだけ付けるのも同じようにrejectされるな。 原因は判ったのでパッチを書いておくが、bugzillaはどうする? 自分で投げてみるいいチャンスかも。
693 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 00:32:34.95 ] ちなみにテストコードはこれ void main() { size_t foo() in{} out{} body{ return 0; } // OK size_t bar() /*in{}*/ out{} body{ return 0; } // NG1 size_t baz() /*in{} out{}*/ body{ return 0; } // NG2 }
694 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 03:41:31.25 ] あ、仮引数の省略ってできたっけ?
695 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 03:42:00.71 ] あと使わない実引数の省略もか
696 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 09:52:43.56 ] >>694 仮引数の省略は不可。 一応、可変個引数で似たようなことは出来るが、余計めんどくさい・・・ >>695 デフォルト引数が設定されている引数については省略可。
697 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 12:15:29.91 ] いやそうでなくて、変数名の省略
698 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 13:06:37.84 ] 変数名省略できる言語なんかあるのか?
699 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 13:13:57.12 ] timerStart( 1000, (Timer,EventArgs){ doSomeThing(); } ); こういうのが書ければいいってことでしょ
700 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 13:17:33.72 ] 長い変数名を書くのが面倒で、短い変数名にしたいって事なら、alias使えばおk。 クラスや構造体の参照を簡略化したいなら、with文を使うのもあり。 型名を書くのを省略したいという事なら、残念ながらDでは出来ません。 関数オブジェクトを簡単に作りたいなら、関数リテラルを使えばおk。 型が違うだけで、処理の内容が同じ関数を書くのが嫌という話なら、テンプレートを使えばおk
701 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 13:36:24.87 ] >>697 void foo(int, long){ ... } みたいに、通常の関数で型だけを書いて仮引数名を省略することは可能。 これはC言語系列のsyntaxを受け継いでいる。 >>699 2.058からは関数リテラルで仮引数名の省略は出来なくなる。なぜなら 関数リテラルのパラメータ型推論・funciton/delegate推論が入ったため、 (a, b){ doSomethig(); } で、a,bが型名か仮引数名かパース時点では判明しないため。 →2.057までは型名として、2.058以降は仮引数名として扱われるようになる >>700 上に書いたとおり、関数リテラル限定で型名を書くのを省略できるようになる。
702 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 14:02:36.29 ] >>701 なんで通るんだろうと思いつつ。 で、どうやって引数の値にアクセスするのよ? ideone.com/6NLyf 誰だ、型名省略できるって言ったやつ。 まあ、戻り値の型は省略できるけどね。 ideone.com/AXEQu
703 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 14:49:02.14 ] >>702 上:コールバック関数やデリゲートに渡すやつで 「関数の型(引数リスト)が決められているけど 引数は結局使われない」というケース。>>699 はその例 下:2.058(次期リリース)以降の話。
704 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 15:44:02.20 ] >>702 C言語やってないだろ!引数を参照しないとコンパイル時に警告でるからそれ対策で型名だけにするってよくやるよ
705 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 23:44:58.41 ] >>704 そうそれが知りたかった
706 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 01:32:26.19 ] >>689 issueとパッチのPullRequestを出しておきました。 d.puremagic.com/issues/show_bug.cgi?id=7218 https://github.com/D-Programming-Language/dmd/pull/608
707 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 09:25:27.92 ] >>704 しらねーよ!悪かったな!
708 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 17:24:31.05 ] >>706 マージされた https://github.com/D-Programming-Language/dmd/commit/4d93bbf53cba3eb19733d2e5cd209b67034f2d10
709 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 19:10:11.82 ] はやっ どうなってんだ
710 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:12:29.93 ] はやすぎる(笑)
711 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:23:18.36 ] ム板では結局ここが一番落ち着く
712 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:29:57.36 ] 上に同じこと書いたのを完全に忘れていた もう駄目かな…
713 名前:デフォルトの名無しさん mailto:sage [2012/01/05(木) 23:45:00.75 ] ・基本的にWalterは毎日commitを行っている ・PullRequestも最低1つぐらいは一日にマージされる ・Parser関係のfixは理解しやすい&影響範囲も限られる →変更の規模としては小さい部類なので比較的早くにマージされる まあ、パッチの規模がでかいと逆に半年ぐらい放置状態になるんだけど。
714 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 06:30:57.53 ] 他の言語と違ってここのはコンパイラの修正がユーザーに近い時点で行われてるから 根強いファンが絶えないのも頷けるなw
715 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 14:40:44.35 ] dwt2もgithubに移行か
716 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 18:03:48.52 ] dwt2 もろくにメンテされてなかったけど 移行してマシになるの?
717 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 20:18:31.68 ] 一応メンテはされてるんだけど オフィシャルへの反映が遅い…
718 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 23:41:55.28 ] ハードウェアがより高性能に進化、ソフトウェアがより多機能に進化、 それに命令や操作をする人間は進化するどころか文化や人格を決め付けや思い込みで否定する争いを始めた
719 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 01:26:59.13 ] DはマルチメディアやGUI関連に弱すぎる
720 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 02:04:44.28 ] 質問です。 std.randomのuniformのboundariesを指定したいときはどうすればよいのでしょうか。
721 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 02:12:35.95 ] uniform!("[]")(0.0, 1.0, generator);
722 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 09:33:38.41 ] なんだその指定方法(笑)
723 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 10:53:52.75 ] >>721 ありがとうございました。
724 名前:デフォルトの名無しさん [2012/01/09(月) 11:27:03.86 ] おまえらバンドのDは好き? www.d-gcr.com/
725 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 16:41:13.84 ] 今はじめて知ったから好きも嫌いもない
726 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 17:06:04.89 ] 知ってたけど話題にするほどいいバンドじゃないからあえて書き込まなかったのに…
727 名前:デフォルトの名無しさん [2012/01/10(火) 06:38:59.55 ] すみません。教えてください。 可変個関数引数に、ポインタを指定するにはどうすれば良いですか? void die( ... ) { real* foo = cast( real* )_argptr; *foo = 0.0; } void main() { real evil = 666.0; die( &evil ); } こんな感じなのですが、上手く渡せません。 すいません。よろしくお願いします。
728 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 10:15:31.56 ] import core.vararg; ... real* foo = va_arg!( real* )( _argptr ); ... phobos のソースを _argptr でgrepした (w
729 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 02:01:31.34 ] それポインタ?
730 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 11:51:42.81 ] _argptrは、渡された引数へのポインタなんだから。 ideone.com/j4fL9 でも、もっといいのは、可変個引数関数を使うのではなくて、テンプレートのタプルを使う方法。 ideone.com/oNAbZ もっと言うなら、ポインタを渡さずに、ref引数や、参照型のクラスを使う方が安全。
731 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 15:05:14.13 ] Internal error: ..\ztc\cgcs.c 354 ってなんぞ?
732 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 16:45:47.49 ] 自己解決しますた 配列を返す関数を呼んでその戻り値に直接[]で添え字指定してたのが問題のようですた
733 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 17:38:51.29 ] Deimos楽しそうだね
734 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 19:39:44.49 ] なにせDでアプリ書くにはCのライブラリが必sゲルンゲフン
735 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 20:26:50.36 ] githubから消えてるんだけどdeimosってどこにあるんだ あとVisualDがインテリセンス的なもの載せてさらに凄くなってやがる
736 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 01:00:24.65 ] github.com/d-programming-deimos
737 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 01:11:09.31 ] Dもrubyみたいにブラッシュアップしてくれる中学生(ただし美少女に限る)どこかにいないかな
738 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 20:10:17.09 ] スタックやキューなどのデータ構造のコレといったライブラリはありますか? なければ自分で作るのでいいんですが、一応……。
739 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 20:58:39.02 ] dcollectionsなのかなあ、コレというのは 個人的には配列が強力すぎて必要性を感じない
740 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 11:28:39.23 ] bool foo(T)(T[] a ...){ return true; } void main(){ assert(foo(1,1,1,1,1,1));//OK assert(foo("abc","abc","abc","abc"));//コンパイルエラー } これをコンパイルしようとしたら test.d(6): Error: expected 1 function arguments, not 4 って怒られる
741 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 12:09:07.55 ] foo(1,1,1,1,1,1); のほうは実は foo([1,1,1,1,1,1]); でも呼び出せる。 2番目のもこれだと解釈されてる
742 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 12:09:27.16 ] import std.stdio; bool foo(T)(T[] a ...){ foreach(i; a) write(i); return true; } void main(){ foo([1,2,3]); // 出力: 123 } SomeType[] a ... という可変個引数の場合、可変部分ナシで配列を一つ渡すことでaに直接配列を渡せる。 だから、文字列(char[])に限らずfooに最初配列を渡した時点でaに対して配列を渡したことになって、複数渡すとエラーになる。 配列自体を可変個引数として渡したい場合は foo!(string)("abc", "abc", "abc") foo!(int[])([1,2,3], [4,5,6]) みたいにTが何であるか教えてやらないといけない。
743 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:03:58.75 ] >>741-742 Tをちゃんと指定しないといけないんですね。 ありがとうございました。
744 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:07:31.14 ] いやまあ、引数が配列複数な時点でコンパイラがTを配列として扱うべきな気もするけど……
745 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 12:38:20.34 ] std.container.Array!(char) str; が通らないんですけどどうすればいいんでしょう ちょっとgcから切り離されたstringが欲しかっただけなんですけど
746 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 14:28:21.70 ] >>745 malloc/freeを直接つかうとか
747 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 19:07:59.01 ] @property void push(int[] arr, int val) { arr ~= val; } void main() { int[] arr; arr.push = 42; } UFCSとか見てて、どうせだからこういうことしたくなるけど さすがに無茶だよなぁ
748 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 19:11:08.92 ] >>745 Array!(dchar) にしないとだめみたいだな いいんだか、悪いんだか
749 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 19:41:50.36 ] >>747 後でソース読むときが大変だと思う
750 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 20:35:15.76 ] interfaceにGUID付けられるようにならないかな RTTIからGUID取れるようにしてObjectのQIだけですべてのパターンに対応できる感じで まあDelphiのパクリなんだけど ちなみにこんな感じでできたら最高 ideone.com/GspW0
751 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 04:40:49.62 ] 昆布のtoってオブジェクトに対してかけるとobj.to!Tに転送されるんだね ソース見るまで気づかなかった
752 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 08:25:24.26 ] class A{ T to(T:string)(){ return ""; } } toStringより特殊化の方がいいってこと?
753 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 10:53:58.40 ] 最近は T to(T)() if (is(T == string)) { のほうだな
754 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 11:09:13.49 ] しかし class の to は deprecate で cast 使うようになりそう? www.d-programming-language.org/phobos/std_conv.html#toImpl Scheduled for deprecation in January 2012. Please define opCast for user-defined types instead of a to function. to will now use opCast.
755 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 11:42:27.25 ] to は双方向で toString は一方通行のイメージ
756 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 23:04:37.08 ] foreachでmixinって出来ない? foreachを展開してmixinしかないかな こんな感じにしたい int abc, def; foreach(s; ["abc", "def"]) writeln(mixin(s));
757 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 00:59:55.47 ] mixinの中身はコンパイル時に確定しないといけないから無理じゃないかな 今CTFEでループさせるなら再帰しか無いけどstatic foreachって入る予定あるの?
758 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 01:55:05.17 ] >>756 こういう事じゃないんだろうな、と思いつつ。 ideone.com/iZWxL
759 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 02:14:38.17 ] >>756 foreachをコンパイル時に回す(=展開する)なら、 配列ではなくタプルを渡すとうまく行く import std.traits; foreach(s;TypeTuple!("abc","def")) writeln(mixin(s));
760 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 02:25:29.44 ] >>751-755 型Aのオブジェクトaから型Bへの変換を行わせたい時、std.conv.toは 1. a.opCast!B() 2. a.to!B() // deprecated 3. B(a) // Bはstruct または new B(a) // Bはclass を試そうとする。但し B==string の場合はa.toString()が優先される。
761 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 02:51:27.28 ] >>757-759 聞いてみるもんだなありがとう! >>759 がまんまだったよ でもstd.traitsじゃなくてstd.typetupleだった
762 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 02:56:10.51 ] 俺はなんて遠まわしな事をしているんだ。 ideone.com/dUPb6
763 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 07:35:04.36 ] >>759 おおすばらしい この辺いつか文法的に整理されると信じてる
764 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 11:52:28.16 ] >>761 正直言ってTypeTupleという名前は混乱の元だと思ってる。 (型だけではなく式やシンボルも受け取れるので) Seq!(...)より抽象的でいいと思うんだけどなあ
765 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 22:38:12.57 ] ところでRangeって便利ですか?
766 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 22:54:46.75 ] Ranger
767 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 00:04:41.28 ] 便利さが実感できない
768 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 00:45:12.66 ] かゆいところに手が届かない
769 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 14:33:09.60 ] auto cap = std.regex.match( ... ).captures; cap.length == 0 と cap.empty の結果が違うのはなんでなん?
770 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:30:51.49 ] 間違えた 前は cap.empty を見なくても length だけで行けてたのに、何で変えてしまったん?
771 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:31:16.51 ] 違わないけどどういう時?
772 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:41:52.41 ] 公式じゃないdflってドラッグドロップしたら落ちるバグって治ってますか
773 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 17:05:25.62 ] 確かこのスレの人が直したはず
774 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:12:29.32 ] Application.autoCollect = false; 公式見解のこの方法じゃなくて?
775 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:18:14.98 ] >>769-771 auto cap = std.regex.match( ... ).captures; if (cap.length == M+1) { // マッチしたときの処理 // 2.057 だとマッチしなくても入ってくる } こんな風に書いてたのが全滅して泣いた
776 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 23:07:56.06 ] スコープの外に出てないローカルオブジェクトってスコープの終わりで自動的にGCとかされます?
777 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 00:06:00.07 ] >>776 つttp://kmonos.net/alang/d/2.0/garbage.html されない。明示的にdeleteしても、scope属性を付けても保証されるのはデストラクタの実行まで。 core.memory.GC.collect()を呼んでも動かないかも? ttp://bm98.yaneu.com/dlang/Chapter-06.html ↑ちょっと古いけど、この辺の実装今はどうなってるんだろう?
778 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 00:07:04.54 ] いえーい!777ゲット!
779 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 00:07:22.76 ] oh…
780 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 00:16:29.13 ] >>778 777オメw
781 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 07:49:24.19 ] >>740-744 PullRequest投げました d.puremagic.com/issues/show_bug.cgi? id=7359 https://github.com/D-Programming-Language/dmd/pull/637
782 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 07:58:58.20 ] >781 もうマージされてた https://github.com/D-Programming-Language/dmd/commit/c9f0d0646ad3dde8a383f6f195763459e5d9a35b
783 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 02:00:58.42 ] すぐバグ修正されるのは素晴らしいね
784 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 18:00:14.63 ] if ( DialogResult.YES == msgBox( msg, caption, MsgBoxButtons.YES_NO), MsgBoxIcon.QUESTION ) doSomething();
785 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 01:07:17.94 ] しまった、オカルト板と間違えた
786 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 11:32:26.21 ] 闇言語だからだいたいあってる
787 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 15:33:27.90 ] いつから出来なくなったん・・ auto f = FILE("test.txt", "w");
788 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 16:42:32.13 ] >>784 ついった見ててやっとわかったけど `, MsgBoxIcon.QUESTION` の位置を間違えてるせいで 毎回doSomething()が実行されてナニコレ、って言いたかったんだな
789 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 20:35:04.94 ] auto f = File("test.txt", "w");
790 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 01:19:23.20 ] >>789 その考えは盲点でした。すばらしい!!
791 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 16:33:18.48 ] Add new => lambda syntax. なにこれ つーかアップデートのたびBug直されまくってるのな
792 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 16:38:36.32 ] これかな www.d-programming-language.org/expression.html#Lambda
793 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 16:51:09.63 ] dmdやphobosのバグに対処するのは楽しいがoptlinkだけはダメだ 血管が切れそうになる
794 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 17:24:14.36 ] d.puremagic.com/issues/show_bug.cgi?id=6831 RESOLVED WONTFIX だと・・・? orz
795 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 20:08:19.93 ] ラムダ式って => になんの? 既存の演算子を使い回すのやめてくれよ
796 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 20:11:30.02 ] 既存? Dの外の話でもしてるのか?
797 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 20:11:32.91 ] 新しい文法だそうで =>これまで使われてたか?
798 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 20:26:31.18 ] 未使用
799 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 21:06:53.00 ] Haskell とかで別の意味の演算子として使われてるとかそういう話か?
800 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 21:30:41.51 ] C#とかでも=>だから合わせた方がいいんだろな
801 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 21:56:29.10 ] 久しぶりにD言語スレ見てみたが相変わらず破壊的変更はあるようで Rangeについて詳しい資料公式に転がってないか?
802 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 22:17:51.92 ] ここが最近の詳しく解説しているページ。公式かどうかは知らない。 ddili.org/ders/d.en/ranges.html
803 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 01:02:10.04 ] class A{void f(){}} class B: A{override void f(){}} のとき、Bを継承したクラスがfをオーバーライドしてるか判断する方法ってありますか?
804 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 01:08:55.00 ] Bをさらに継承したクラスCがあった場合 (&B.f is &C.f) で判断できる これがtrueの場合オーバーライドしていない
805 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 01:31:01.79 ] import std.stdio; class A{void f(){}} class B:A { void p(B b){ if(&b.f is &f){ writeln("---"); }else{ writeln("override!"); } } override void f(){} } class C:B{} class D:C{override void f(){}} void main() { auto b = new B; b.p(new C); b.p(new D); } 実行結果 override! override! なぜ・・・orz
806 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 01:44:59.45 ] auto v1 = &b.f; auto v2 = &f; (v1.funcptr is v2.funcptr) これで判断できました。ありがとうございます。
807 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 21:27:54.19 ] scopedってもう使ってもいい系?
808 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 22:02:42.96 ] なんか悪い噂とかあったっけ?
809 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 22:19:17.76 ] scope記憶クラスの代用品として仮実装中ってどっかで見たような記憶があるようなないような
810 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 01:21:12.60 ] class A { } void main() { Object[] a = new A[2]; } これ暗黙変換できなくなったの?
811 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 02:11:51.89 ] それ元からできないと思う
812 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 02:25:44.57 ] >>810 それを許すと以下のような問題が起きる class A { } class C { } void main() { Object[] a = new A[2]; a[0] = new C; // Aしか入らない所にCを入れている }
813 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 02:34:58.93 ] いやその理屈はおかしい
814 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 02:41:46.52 ] Javaでもできたお
815 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 02:42:33.29 ] 動的に静的の問題じゃないの?
816 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 18:27:31.78 ] >>810 >Object[] a = new A[2]; これと Object[] a = [ new A(), new A() ]; これは違うよね。上は暗黙変換出来なくていいと思う。
817 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 19:00:50.88 ] A[2] b; pragma(msg, typeof(new A[2])); pragma(msg, typeof( [new A(),new A()] )); pragma(msg, typeof(b)); A[] A[] A[2u]
818 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 19:06:16.22 ] >>817 ほお…知らなかった Dの静的配列と動的配列の値渡し/参照渡しとかの仕様が頭の中でこんがらがる
819 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 20:56:50.02 ] 前から気になってたんだけど static if(...) { } else static if(...) { ← ここのstaticってなんで必要なの? }
820 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 21:20:36.45 ] static if(...) { } else { static if(...) { ... } } の略だから
821 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 21:28:43.30 ] >>817 816で言いたかったのは、動的か静的かではなく、 >Object[] a = new A[2]; は配列長を確保してるだけなので必要な場面が思いつかない。 暗黙変換できなくていいと思う。 でも810がやりたかったのはエスパーすると Object[] a = [ new A(), new A() ]; こっちじゃね?なら暗黙変換できるよーと言う事です。
822 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 21:52:58.62 ] new A[2];の結果は各要素(参照)がnullである長さ2の動的配列ってことか new A[2];はnew A[](2);に読み替えられてるのかな
823 名前:821 mailto:sage [2012/02/02(木) 22:02:22.30 ] あ、「先祖クラスの配列へのcastは例外的に暗黙でいいやん」と言う話だったならたしかにそう思います。
824 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 22:10:09.59 ] >>822 Error: cannot implicitly convert expression (new A[](2u)) of type A[] to Object[] と出てるからまさにその通りだと思う。
825 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 22:20:34.66 ] >>822 C++感覚で new A[2] と書くとドツボにはまりそう。
826 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 23:53:54.57 ] 静的配列 サイズがコンパイル時に決定 値渡し、返り値にも使える 静的配列の代入は複製 動的配列はサイズが同じなら代入できる、違えば例外、この場合も複製されるはず(うろ覚え) 動的配列 参照型 int[]にint[10]とかを代入できるはずだがどうなるかは忘れた
827 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 01:53:58.80 ] >>826 int[10] a; int[] b; b = a; // 複製されない assert( b.ptr == a.ptr ); b = a.dup; // 複製される assert( b.ptr != a.ptr ); b[] = a; // 複製される assert( b.ptr != a.ptr );
828 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 19:48:53.28 ] $ type reg.d import std.regex; import std.stdio; void main() { writeln(match("他"d, regex("バ"d))); writeln(match("他"d, regex("ビ"d))); writeln(match("他"d, regex("ブ"d))); } $ dmd -run reg.d [] [] core.exception.AssertError@D:\devtools\dlang\dmd2\windows\bin\..\..\src\phobos\std\utf.d(800): Attempted to decode past the end of a string 偶然踏んでしまった
829 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 22:41:57.52 ] 056->057間のstd.regexの変更っぷりに吹いた
830 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 08:13:07.47 ] typeidと.classinfoがあるのは歴史的な理由?便利さから?
831 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 08:28:41.96 ] >>810 公式ドキュメントのArraysに暗黙変換できるって書いてんだが…
832 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 12:44:43.72 ] きっと夢でも見たんだろう
833 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 12:49:28.15 ] 2.057ではねられるようになって首を傾げてたんだぜ やっぱり regression か
834 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 17:44:44.34 ] Arrayに関しては禁止するべきだと思うんだがな 動的配列に静的配列入れたときも破壊的変更するとき初めてコピーされるという奇妙な仕様になってるし明示的にdupとかキャストさせるべき
835 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 19:04:51.37 ] っCopy-On-Write
836 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 12:32:24.51 ] >>831-833 d.puremagic.com/issues/show_bug.cgi?id=926 なんか 「D2 では禁止!ドキュメントが古い!」とか 言ってるんすけど・・・ユルセナイ シャザイト バイショウヲ ヨウキュウシル
837 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 13:12:32.03 ] trunk のドキュメントをのぞいて見たらこうなってた。(´・ω・`) ショボーン ○ A[] -> const(Object)[] × A[] -> Object[]
838 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:16:23.41 ] あー、うーん、まあそうか…
839 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:35:51.35 ] なるほど、そうじゃないと auto a1 = new A[](10); Object[] a2 = a1; a2[0] = new Object; でバグっちゃうのか。 明示的に Object[] a2 = a1.dup; こうするのは今もできるってことね
840 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 20:30:19.03 ] そういやdupでimmutable剥がせる件ってどうなったんだろ
841 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 17:22:48.20 ] 細かい仕様変更にはもうついていけないよう
842 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 00:52:17.22 ] dupはimmutableはがせるでしょ idupだとimmutableのまま
843 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 02:57:23.76 ] constとimmutableの違いがよく分からないよぅ
844 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 03:03:38.39 ] const: 不変値を関数間で共有 immutable: 不変値をスレッド間で共有
845 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 09:54:57.34 ] 2.058ダウンロードどこでできるんですか!?
846 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 12:12:21.70 ] まだリリースされてない どうしてもさわってみたければ github から3点セットでDLしてビルドしる
847 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 17:35:50.05 ] >>844 間違ったこと教えちゃいかんよ・・・ const その参照から値は変えられないが、別の要因で変わることがある。 immutable いかなる要因でも値が変わらない。
848 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 17:50:05.45 ] constの分かりやすい例。 ideone.com/sGgmK
849 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 18:46:46.08 ] ガンダムで例えると シールド付きがconstで フルアーマーがimmutableってことね この例えはとにかく、なるほど…勉強になりました。
850 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 18:52:49.18 ] constは引数変数向けの型ってイメージがあるな 引数と関わりのないconst変数なんて作らないよね?
851 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 19:05:15.37 ] クラスのフィールドでインスタンス初期化時に固定するものとかconstにする
852 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 19:09:39.82 ] それってimmutableでもいけるんじゃないの?
853 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 20:19:05.10 ] Const と Immutable www.kmonos.net/alang/d/2.0/const3.html >>852 static this()
854 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 16:56:02.59 ] static thisでだとimmutable初期化できないのかーと思ったけどできるじゃん どういうことが言いたかったの?
855 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 18:53:53.23 ] >>854 ごめん、勘違いしてた
856 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 19:16:59.45 ] 下のコードをコンパイルするとdmdが落ちるんですが。 dmdのバージョンは2.057です。 template foo(T){ enum foo = __traits(hasMember,T,"sizeof"); } static assert(foo!(int)); //DMD Crash
857 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 19:33:23.96 ] 久々にGUIライブラリを見て回った gtkD・wxD・DFL(fork)・DWT辺りは元気だけどQtDが死んでるなぁ どこか別の所で元気にやってるのかな?
858 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 19:45:03.62 ] >>856 trunk の最新ソースを落としてビルドしたら落ちなくなってた(WinXP 32)
859 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 19:57:57.79 ] >>858 では、2.058では解決されているのですね ありがとうございます
860 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 10:01:51.83 ] 明日は2.058リリースか 3.0とかどうなったんだろな
861 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 13:11:08.52 ] D3はmoduleに代わってnamespaceを導入して 呼び出し側でもrefとかoutとかつけて属性を明示できるようになって プロパティはset/getキーワードを用意して自然に表現できるし Attributeクラスでメソッドの属性を自作できる上にラムダ式とかも余裕で使えるし しかも.NETフレームワークで動く
862 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 13:12:55.18 ] 今更namespaceとかありえないんじゃないかな
863 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 13:16:46.99 ] >>861 あとはVisualStudioで開発できれば完璧だな
864 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 13:29:42.65 ] D3では多重ディスパッチがついて型推論が進化
865 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 14:26:26.13 ] D3ではなんとヘッダーとソースをファイルレベルで分離して記述することができるようになります!
866 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 14:27:41.37 ] ヤメテ!
867 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 15:37:41.30 ] 機能追加を国民投票で選びます 投票券はTDPLに付属
868 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 17:04:21.14 ] 呼び出し側にrefつけるのは普通に欲しい 必須じゃなくてもつけまくるわ
869 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 17:49:28.42 ] >>868 C# とか VBのアレか アレはすごくほしい けどタプルとかうまく使ったらいらないぜ ってものかも知れない
870 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 00:20:34.12 ] なにそれ。 D3 と C# の違いを教えてくれ。 const ありの C# としても使えるならぜひ使おうかと思うんだが。
871 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 00:23:01.61 ] D3.0はPerl6よりは現実的な開発が予定されてる言語
872 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 01:02:54.60 ] Perl6ってそんな非現実的なの?w
873 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 01:12:46.83 ] はたしてあれ実装できるんだろうか WebProg板にスレあったはず
874 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 01:23:54.85 ] ググってみたら吹いた。 設計開始から10年で初の処理系ってD言語超えてるな
875 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 07:09:01.91 ] 心配すんな、クリスマスには出る
876 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 19:03:17.74 ] Dは登場と共に処理系もあったじゃないか 永遠に開発中だけど
877 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 19:16:20.31 ] 設計完了に先立つこと10年にして早くも処理系
878 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 20:23:52.67 ] C言語だって・・・最終仕様より先に初期実装があったんだ!