[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 03/03 02:04 / Filesize : 146 KB / Number-of Response : 879
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

D言語 Part28



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)

577 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 00:43:41.69 ]
右辺で例外が起きたらと考えると、怖いな

578 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 01:27:27.23 ]
opIndexAssign( "fuga", hoge.length )
こんなオーバーロードないんだっけ?

579 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 01:36:45.52 ]
>>577
assert(笑);

580 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 01:50:49.40 ]
>>577
STLのコンテナでfront()とpop()が分かれてる理由系の話だね
ideone.com/rBvF3

581 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 17:13:59.45 ]
D1系のアップデート見てて思ったんだけど
CTFEできる範囲って仕様で明確化されてるの?

仕様に沿ったコンパイラでCEFEのせいで
コンパイルできる事とできない事があるってのはとても困る気がする

582 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 17:17:28.83 ]
pureなものじゃない?
今@pure付けられる範囲をどんどん広くしていってる気がする

583 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 02:24:56.04 ]
@safeならCTFEできる、ってのもあったような。

584 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 13:21:42.68 ]
ぶっちゃけ、大抵のプログラムは、C#なりPythonなりHaskellなりGoなりの高級言語を使えばよくて、
わざわざ「Cに代わる低級言語」を持ち出す必要はない

一方で、本当にC言語に取って代わろうとするなら、
高級言語を持ち出せない、プアな環境で使えないといけない

・ポインタ演算は手放せない
・GCは使えない
・ポリモーフィズムも使えない
・テンプレートも容量を食い過ぎる
・正規表現を実行時にコンパイルするのは贅沢すぎる
・標準ライブラリーが充実させても意味が無い
・標準でないアーキテクチャをサポートしなければならない

それなら、C言語で十分じゃない?

文字列型?ハッシュマップ?サードパーティ製のを使えばいい

ドキュメント自動生成なら、言語仕様を変更しなくても、Pythonとかでツールを作ればいい

Cのシンタックスがキモいとか、Lisp風マクロとかが欲しいと言うのなら、
JavaScriptに対するCoffeeScriptみたいな物を作ればいい

585 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 13:26:14.29 ]
哀れなD使い達を説得しにきたの?



586 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:35:57.36 ]
あちこち手を伸ばしすぎて
かつて売りにしてた機能まで潰しまくる迷走ぶりについては認める

587 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:56:03.70 ]
ttp://www.kmonos.net/alang/d/2.0/builtin.html

588 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 16:41:48.27 ]
複素数…

589 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 22:25:33.38 ]
typedefってなんで消えたの?
あの超シンプルに型を作れるところが気に入ってたんだけど

590 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:06:14.50 ]
基本的にマクロみたいな機能は無駄です

591 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 09:28:03.36 ]
それってaliasのこと?

592 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 10:52:52.35 ]
alias は便利だけど危うさが漂う
もうちっと機能を狭めてもいい

593 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 11:15:18.32 ]
>>590
そんなんじゃ「そうじゃねーよ俺は便利に使ってんだよ」と反論できちまう
せめて「typedefあるとコンパイラの実装が超大変になるんだよ、わかれよ」くらい言ってほしい

594 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 11:43:45.05 ]
strong typedefはまともにやるとめんどくさいからな。
t f(t, t)って関数があってtからuを新たに作ったときに、t f(u, t)として使えるのが正しいのか
t f(u, u)が正しいのかu f(u, u)が正しいのか。

595 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 12:11:48.42 ]
ユーザ定義リテラルがあれば
複素数をビルトイン型にしなくてもいいような気もする
(パフォーマンス的には分からんが)



596 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 12:14:25.88 ]
>>594
やっと納得した
uがどこまでtか微妙なのが仕様的に面倒なのね

あれ、でもenum…

597 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 12:56:34.72 ]
>>595
複素数がライブラリに移動したときにその話はあった
結論から言うとcomplex型とimaginary型を併用することでパフォーマンス的にも問題なく解消する
ただし記述が面倒だからユーザー定義リテラルが必須

598 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 19:54:02.30 ]
ユーザー定義リテラルを入れたいから複素数リテラルをなくしたのか?
ユーザー定義リテラルを入れなくても、複素数リテラルがあれば、複素数についてのパフォーマンスは元々解決されていたんでしょう。
なくす必要性がまだ見えないんだよね

599 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 20:07:50.18 ]
コンパイラ組みこみじゃなく、
ライブラリの存在を前提としたシンタックスシュガー化するということかと。
Dならstring→immutable char[]が似ているし、
C#のstringはSystem.Stringの別名だ(と思う)し。

600 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 20:17:25.54 ]
ユーザー定義リテラルって何ぞ・・・? ガクガクガタガタ

601 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 20:19:04.64 ]
C99が複素数を言語組み込み、C++が複素数をライブラリ提供してるけど
gccはバイナリ互換性を持たせるために、「コイツは内部的に複素数だ」ってpragma用意してるよね。

Dの複素数もC99の複素数とバイナリ互換性を持ってるはずだが、ライブラリ版はどうなってるんだろう。

602 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 03:55:23.75 ]
>>599
そうするのはなぜだか知ってますか?
ユーザー定義リテラルを導入するならば複素数だけ優遇する必要がないから?

603 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 04:15:55.26 ]
octal!100はどうするんだよ…。
octだったかな

604 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 12:14:29.54 ]
dlang.org てのがまた出来てる
こっちに移るんかな

605 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 17:11:57.58 ]
当面の間はミラーリングして様子見じゃないの



606 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 01:33:27.78 ]
const(char[])がconst(char)[]に暗黙変換されるようになったんだってな。なんか不具合出ないのかな

607 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 07:19:58.60 ]
仕様も見ずに言うけどref引数だと変換されないんだよね?

608 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 20:31:46.19 ]
ちょっと生理させてくれ

const(char)[]:中身を書き換えられない配列
const(char[]):?? Cのchar a const[] ?? いやそれじゃchar a[]と同じか

609 名前:デフォルトの名無しさん [2011/12/26(月) 23:07:10.07 ]
const(char[]) a, b;
a = b;
が出来ないんじゃなかった?

610 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 23:17:27.56 ]
・・・えっち

611 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:56:23.39 ]
月桂冠

612 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 08:42:56.37 ]
厶板ではここが一番落ち着く

613 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 11:50:14.46 ]
わかるわ
俺もD言語に全く興味ないのに覗いてるしな

614 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 12:05:34.60 ]
あれ、俺がいる

615 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 13:37:36.63 ]
逃げない奴はよく訓練されたD言語erだ



616 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 21:03:32.31 ]
D言語が落ち着くまで待ち続けるぜ

617 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 21:08:22.82 ]
UFCSとラムダ式が入るらしい
まだまだ若者には負けんよ

618 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 21:21:05.99 ]
UFCSって何?

619 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 21:22:04.16 ]
Windows版64bit対応くらいしてくり

620 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 21:23:30.80 ]
Universal Fire Contol System

621 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 21:47:40.01 ]
これで敵軍も拾った武器で戦えるようになるね! っておい

622 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 10:39:17.88 ]
2.057でもHello, World1MBのまま?

623 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 13:05:42.51 ]
import std.stdio;
void main() { writeln("hello, world."); }

↑に -O -relese -inline 付けて
933404byte=911.5kbyteだった

624 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 14:06:17.81 ]
クソだな

625 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 15:43:07.33 ]
>>622
2.058から220KBに減るよ



626 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 15:50:05.25 ]
別にでかくても実害ないとは思ってるが、小さいバイナリ好きなのもちょっとわかる

627 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 15:58:44.05 ]
>>625
リリース直後にそういう話が出てたから対応済みかと思ってたわ
2.057 に移行する意欲が減退・・・冬眠でもするか

628 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 16:43:49.87 ]
サイズってそんなに重要?
配布するにしても7zとか使えば誤差みたいなもんだと思うんだけどなあ

629 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 17:50:25.84 ]
その辺はPyの文法が許せるかとか
MyClassName instance = new MyClassName();
の冗長性が許せるかとか
そういうレベルの話だと思う。
気にする人もいればそうでない人もいる。

630 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 17:52:43.48 ]
小さいプログラムだと結構嫌だな、サイズでかいの
まあそういうのはDなんか使わないでスクリプト言語でも使ってろって話なんだけど

631 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 18:46:43.46 ]
公開したり、他の人へあげるの、躊躇するよね
大した機能もないのに1MBだと、何か仕込んでるじゃないと勘ぐられそうでw

632 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:04:03.41 ]
upx使うと147kbまでがっつりと減った。
こっちはこっちで抵抗あるとは思うが、いちおう。

しかし900kbってなんかDelphiを思わせるサイズだ。
Dってアルファベットになんか呪いでもあるのかとw

633 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:13:50.50 ]
Deburin

634 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:19:14.70 ]
そのファイルサイズ、大きいように見えるでしょ?
でも、実際にはOSのシステムファイルと共通してる部分が多いから、実際にはそんなにサイズは食ってないんです。

635 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:41:09.33 ]
いや表示されてるだけサイズ食ってるだろw
ゼロパディングされてるわけでもあるまいし



636 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:41:48.93 ]
実際に900KB食ってるだろ

637 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:43:30.61 ]
これが本当のエクササイズ

638 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 09:47:22.63 ]
upx使うと減るってことは冗長な記述が多いってことか……

639 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 12:49:18.74 ]
Dは大らかな人達が開発してるんだよ
ファイルサイズくらいどうってことないよ

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言語だって・・・最終仕様より先に初期実装があったんだ!






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<146KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef