[表示 : 全て 最新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)

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