トップページ⇒tech
1001コメント253KB

D言語 Part26

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/12/28(火) 10:49:05
プログラミング言語 D (D Programming Language) について語るスレッドです。

■前スレ
http://hibari.2ch.net/test/read.cgi/tech/1281826764/

■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)

■コンパイラ
http://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
http://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
http://www.dsource.org/projects/ldc (LDC, バックエンドにLLVM)

■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF)
ttp://dsource.org/ (dsource)
ttp://tinyurl.com/candcpp2d2 (C/C++に疲れた人のD言語2.0)
ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語)
ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか)
ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座)
ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画)
ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games)
ttp://dusers.dip.jp (D言語友の会)
ttp://www.wish.sakura.ne.jp/desuno/game/Drawing (PrincessDrawing! D言語で作られた横スクロールSTG)
0412デフォルトの名無しさん2011/03/05(土) 13:39:22.72
>>ubyte[]
こっちは学校のトイレでタバコ吸ってるDQN達か。
噛み付くぞてめぇ!って粋がってるイメージ
0413デフォルトの名無しさん2011/03/05(土) 14:25:07.68
>>411
Dのプロジェクトなんて無数にあるぜ!
でも心の綺麗な人にしか見えないんだ
0414デフォルトの名無しさん2011/03/05(土) 14:35:04.70
https://github.com/search?language=d&q=%2F%2F&type=Repositories
0415デフォルトの名無しさん2011/03/05(土) 15:53:42.34
心のきたない俺は
空に瞬いている星と地に墜ちた星を見分けられる
ようになりたい
0416デフォルトの名無しさん2011/03/05(土) 16:10:17.11
必死になってD1からD2に移植してきたアプリがまともに動くようになってしまった
コンパイルエラーが出ない
const関係で詰んだりしない
unittestが意味不明な理由で失敗しない
循環static thisで落ちたりしない
どこからともなくHiddenFuncErrorが投げられたりしない
よくわからない箇所でアクセス違反が発生したりしない

虚しい…
0417デフォルトの名無しさん2011/03/05(土) 16:39:15.03
じゃあ次は >>414 に登録して星になるんだ
0418デフォルトの名無しさん2011/03/05(土) 16:47:57.97
D言語の人ってエディタ何使ってるんですか?
0419デフォルトの名無しさん2011/03/05(土) 16:53:22.99
サクラエディタにキーワード登録して使ってる
0420デフォルトの名無しさん2011/03/05(土) 17:02:55.72
emacsかVisualD
0421デフォルトの名無しさん2011/03/05(土) 17:32:44.81
DFL+scintillaで自作エディタ
0422デフォルトの名無しさん2011/03/05(土) 17:34:11.47
サクラエディタがもう一人。
VisualDはutf-8で保存してくれるようになったんかな。
0423デフォルトの名無しさん2011/03/05(土) 18:32:53.98
秀丸とマクロ
0424デフォルトの名無しさん2011/03/05(土) 18:40:03.66
VisualDうまく入れられなかった。
画像付きで解説してるところないですか?
あるいは誰か解説をしてもらえると幸いです。
0425デフォルトの名無しさん2011/03/05(土) 18:47:06.85
VisualD をGoogleの画像検索すると、1番上にそれらしいのが出るぞ
0426デフォルトの名無しさん2011/03/05(土) 18:59:34.66
サクラエディタ
Dの1_234.56みたいな数値定数とr""を認識してくれる設定ファイルが欲しい・・・
0427デフォルトの名無しさん2011/03/05(土) 19:07:17.03
>>424
VS2003〜2010のどれかをインストールしてる状態でVisualDをインストールしてDMDのフォルダを指定するだけじゃん
VS立ち上がったままでやったら駄目だぞ?
0428デフォルトの名無しさん2011/03/05(土) 19:15:14.70
>>426
`\"`とかやると変になるよな
正規表現キーワードとかで何とかなるのかしらん
0429デフォルトの名無しさん2011/03/05(土) 19:18:51.42
>>426
うまく機能してるか不安だけど

/(?<!\w)0[xX][\da-fA-F_]*(\.[\da-fA-F_]+)?([pP][\+\-]?[\d_]+)?[fFL]?i?(?!\w)/k
/(?<!\w)([\d_]+\.([\d_]+)?|([\d_]+)?\.[\d_]+)([eE][\+\-]?[\d_]+)?[fFL]?i?(?!\w)/k
/(?<!\w)([1-9][0-9_]*|0[bB][01_]+|0[xX][0-9A-Fa-f_]+|0[0-7_]*)(L|u|U|Lu|LU|uL|UL)?(?!\w)/k

/(`[^`]*`|(?<!\w)r"[^"]*"|(?<!\w)q"[^"]*")[cwd]?/k
0430デフォルトの名無しさん2011/03/05(土) 19:32:19.31
おっと、通常の""文字列と''の文字定数も必要なんだった
/((?<!\w)x"[\s0-9A-Fa-f]*"|(?<!r)"([^"\\\r\n]|\\.)*?")[cwd]?/k
/'[^']+'/k

標準機能の""と''の色付けは無効にして、全部正規表現キーワードでやってる
0431デフォルトの名無しさん2011/03/05(土) 19:32:30.51
おお、8進数まで認識する…
GJ
0432デフォルトの名無しさん2011/03/05(土) 20:37:02.75
正規表現キーワードは複数行対応したら神なんだが
0433デフォルトの名無しさん2011/03/05(土) 21:48:46.23
よし、サクラエディタはオープンソースなんだからD言語で実装し直そうぜ
0434デフォルトの名無しさん2011/03/05(土) 21:59:52.22
それはやらないのがDスタイルだろ?
0435デフォルトの名無しさん2011/03/05(土) 22:23:57.23
サクラエディタの描画周りのコードの汚さェ・・・
0436デフォルトの名無しさん2011/03/05(土) 22:27:40.81
今まで@propertyをメソッドの一行上に書くスタイルで書いてたんだが、

class Test
{
  @property
  void delegate() func()
  {
    return _func;
  }
  private void delegate() _func;
}
がコンパイル通らなくてびっくりした。

void delegate() @propertyっていう型に認識されてるっぽいんだが、そんなものあるのか?
まぁ今後はvoid delegate() func() @propertyって後置しようと思ってるから良いんだけど…
0437デフォルトの名無しさん2011/03/05(土) 22:42:55.96
後置ってそのためだったのか
0438デフォルトの名無しさん2011/03/05(土) 22:54:55.62
その@は句読点じゃなくてatという単語だったのかw
@property ってアノテーションと同じ感覚で書きたくなるよなあ
0439デフォルトの名無しさん2011/03/05(土) 23:06:13.31
Javaのアノテーションとpythonのデコレータも同じような書き方で全然意味が違ってややこしいのに
これ以上@に変な意味与えるのやめて
0440デフォルトの名無しさん2011/03/05(土) 23:17:33.18
@propertyとかを別の行に書くとgrepして検索した時に
プロパティってすぐ分からないから1行に書きたくなる俺は異端?
0441デフォルトの名無しさん2011/03/06(日) 06:26:20.24
前置の@propertyが高階関数に付けられなくても困らないかな?
0442デフォルトの名無しさん2011/03/06(日) 18:58:03.40
>>422
文字コードの話ならエディタでDのソースコードを開いている状態で
VSのファイルメニュー→「保存オプションの詳細設定」で変えられるぞ
ソリューションエクスプローラで.dファイルを選択しているだけだと出てこないのが罠
0443デフォルトの名無しさん2011/03/06(日) 20:54:45.48
128 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/14(火) 05:21:24
VisualDがutf-8で保存してくれない……。

129 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/14(火) 11:32:49
日本語が使えなくなるだけだと思えば許せる。
VisualDはVS2010のデバッガが使えるってだけで最高だけど、やっぱりインテリセンスがなぁ。

130 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/14(火) 17:42:21
ファイル→保存オプションの詳細設定でUTF-8に変えてくれる
デフォでUTF-8にして欲しいけどな

131 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/15(水) 00:58:23
簡単に解決できそうな気がするけど。問題として認識されてないんだろうなあ。

132 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/15(水) 01:00:25
いつものパターンか
0444デフォルトの名無しさん2011/03/06(日) 21:02:38.90
>>443
VSの仕様って良く分からんけど、アドオン側からデフォルトの保存コードを変更できるもんなの?
VS本体でも変えられないのに
0445デフォルトの名無しさん2011/03/06(日) 21:29:46.06
俺もよくわからんが、VS本体でも変えられないってのはよくわからん。
保存オプションからコードは変えられるんだろ?
新規作成かなんかの時にアドオンからutf8にしてくれるなら、
別にVSの「デフォルトの保存コード」を変更する必要はなくね?
いや、そういうことができるのかはわからんし、結論としてはよくわからんが。
0446デフォルトの名無しさん2011/03/06(日) 21:32:29.56
メモ帳でBOMつき空ファイル作って
Visual D の新規ファイルのテンプレートに
突っ込んでやればいいんじゃないかな
0447デフォルトの名無しさん2011/03/07(月) 05:55:31.67
>>427
なんか、前はなぜまともにいかなかったのかわからないほどあっさりでけたw
これ、メソッドのインテリセンスはなし?
0448デフォルトの名無しさん2011/03/07(月) 10:50:50.27
Eclipse使い('A`)ノ
0449デフォルトの名無しさん2011/03/07(月) 14:11:28.12
インラインアセンブラのコンパイルエラー文が
標準出力に出ると気づかずに時間を無駄にした・・・統一して orz

コンパイラ     →エラー出力
インラインアセンブラ→標準出力
リンカ       →標準出力
0450デフォルトの名無しさん2011/03/07(月) 20:17:26.02
DWT2 with D2、何とか動くけどたまに異常に長時間固まるなぁ
どこを直せばいいことやら…
0451デフォルトの名無しさん2011/03/07(月) 20:56:17.87
>>450
dmd
0452デフォルトの名無しさん2011/03/07(月) 21:52:38.89
確かにphobosよりはdmdっぽい
0453デフォルトの名無しさん2011/03/07(月) 22:38:49.62
GCが悪さしてるとかじゃなくて?
0454デフォルトの名無しさん2011/03/07(月) 22:59:08.75
今core.sync.*ってまともに動くの?
0455デフォルトの名無しさん2011/03/08(火) 02:37:21.81
多分動く
0456デフォルトの名無しさん2011/03/08(火) 06:09:17.48
課題が山積過ぎて今何やってるのかさっぱりわからんのだが
0457デフォルトの名無しさん2011/03/08(火) 23:52:27.11
大丈夫だ。Dのコミュニティには船頭クラスの人材がゴロゴロいるからな
0458デフォルトの名無しさん2011/03/09(水) 00:04:09.01
船頭多くして山に登る・・・?
0459デフォルトの名無しさん2011/03/09(水) 00:08:55.70
船頭多くしてTIOBEランキングを登ってくれると良いんだが
0460デフォルトの名無しさん2011/03/09(水) 00:10:34.66
委員会設計と独裁者設計の悪いとこどりしてね?w
0461デフォルトの名無しさん2011/03/09(水) 01:08:10.12
クラスのポインタ取るのって void* でキャストとかすればよかったのね。。。
クラスは参照だっていうから、C++ のように & してたけどうまくいかなんだ。
emplace のソース見てはじめて知ったけど、常識?
0462デフォルトの名無しさん2011/03/09(水) 01:09:21.34
面接でD言語使ってますとアピールしたら不思議がられた。
0463デフォルトの名無しさん2011/03/09(水) 01:15:08.22
会社にもよるが、元々DelphiやらHaskellやらScalaやらを使ってます!みたいなところでもないかぎり
むしろ言わないほうがいいと思うぞ。
普通の会社はプログラミング言語といえばC系とJavaとC#とPHPぐらいしか選択肢がない。
0464デフォルトの名無しさん2011/03/09(水) 13:40:29.21
日本語訳サイトの更新キター と思ったら std.datetimeが英語だw
これは誰か翻訳手伝ってくれということだな・・・
0465デフォルトの名無しさん2011/03/09(水) 19:25:49.64
日本語サイトの中の人はたまに英文のまま公開してからゆっくり翻訳してる事があるから
つまり手伝ってあげて
0466デフォルトの名無しさん2011/03/09(水) 23:13:25.42
そういえば自分も構造体の継承が欲しかったんだけど、
alias this すれば近い感じで使えるのね。便利便利。
0467デフォルトの名無しさん2011/03/10(木) 10:58:53.05
だからクラス使おうぜ・・・
0468デフォルトの名無しさん2011/03/10(木) 13:59:19.02
Phobosにも構造体で実装されてるのが結構あるから、
そういう既存のものに自分機能をつけたいことはあるかもしれない。
0469デフォルトの名無しさん2011/03/10(木) 19:49:49.59
機能の追加には興味ないけど一つの配列に種類の異なるものを入れたりすることには興味ある
Variant使えばいいのか?
0470デフォルトの名無しさん2011/03/10(木) 20:04:22.60
この前たまたま見つけたんだけど
http://www.kmonos.net/alang/d/2.0/phobos/std_typecons.htmlのstruct Tupleのとこ
使えるのか?
0471デフォルトの名無しさん2011/03/10(木) 20:34:30.39
コンパイル時に型が決定してる必要がある
0472デフォルトの名無しさん2011/03/11(金) 10:58:32.61
>>469
継承
タプル
variant型

お好きなのをどうぞ。
0473デフォルトの名無しさん2011/03/11(金) 11:54:04.50
継承→事前定義の必要あり
タプル→型の順番はコンパイル時に決まる。その場で定義できる構造体に等しい。
variant→実行時に何でも入るが、実行時処理が増えるのと、値取り出しの型に関する処理が面倒。
って感じか。
0474デフォルトの名無しさん2011/03/11(金) 12:15:18.10
ああ、もう二つあった。
共用体
void*型
0475デフォルトの名無しさん2011/03/11(金) 12:46:56.80
variantは共用体やvoid*型に実行時型情報を加えた構造体ですな。
0476デフォルトの名無しさん2011/03/11(金) 12:52:01.96
誰か日本語シンボルを扱えるデバッガをつくってくれ

ローカルシンボルをすべて日本語で記述して
漢字かな混じり文の伝統を継ぐガラパゴス文化を創造するのだ

なに、全角英数が使えないだと・・・?
0477デフォルトの名無しさん2011/03/11(金) 13:02:08.85
>>476
言い出しっぺの法則。
0478デフォルトの名無しさん2011/03/11(金) 18:51:07.71
boxer それなりに便利だったんだけど、消滅する運命になってしまったね・・・。
なんでだろ。
ちなみに今使おうとするとコンパイラが落ちた気がする。

>>476
前お遊びでやってみたんだけど、いちいち日本語に切り替えるのが
めんどくさくてやめてしまった・・・。
全てを全角でかけないときついね。


地震怖かったー・・・!
0479デフォルトの名無しさん2011/03/11(金) 21:22:07.39
boxはvariantに置き換えられるだけでしょう
コンパイル時型情報を生かした高速なやつ
0480デフォルトの名無しさん2011/03/11(金) 21:27:43.79
地震後にD言語友の会が死んでてひやっとしたけど
中の人は神回避したらしい
0481デフォルトの名無しさん2011/03/12(土) 00:59:02.79
地震に巻き込まれて命を落とされたD言語利用者の御冥福をお祈りします
0482デフォルトの名無しさん2011/03/12(土) 01:41:34.72
itkz が ついったでデマ流したとかで叩かれてる
どのくらい関わっている人かよく知らんけど
0483デフォルトの名無しさん2011/03/12(土) 14:06:38.74
Visual D の更新が活発だ
ううむ、これは困ったぞw
0484デフォルトの名無しさん2011/03/12(土) 20:09:50.07
クラスのgetterからクラス内の配列をconstにして返してもらって
その配列をdupでコピーすると配列のメンバに変更を加えることができる
理屈としては問題ないんだろうけどなんか気持ち悪いなぁ…
0485デフォルトの名無しさん2011/03/12(土) 20:13:29.13
状況がよくわからんけどオリジナルに変更加えられるわけじゃないんでしょ?
変更したくないなら dup を const で受け取ったりすればいいのかな?
0486デフォルトの名無しさん2011/03/12(土) 20:34:48.92
>>485
>>484 は配列の要素がクラスの時じゃないか?
ttp://ideone.com/epioS

たしかにこれは気持ち悪いな
0487デフォルトの名無しさん2011/03/12(土) 21:11:29.93
>>486
なるほど、クラスか・・・。
これは気持ち悪い。
0488デフォルトの名無しさん2011/03/12(土) 21:32:09.28
推移的constが推移しないんだよな
0489デフォルトの名無しさん2011/03/12(土) 22:29:09.44
よくわからんが、const([]T) をdupしたら []T になっちゃうってことか?
本当は[]const(T)になってほしい、と。
0490デフォルトの名無しさん2011/03/12(土) 22:29:32.02
[]の位置が逆だ……ごめん。
0491デフォルトの名無しさん2011/03/12(土) 22:55:45.12
クラスの場合const(T)==const(void*)かmutable(T)==mutable(void*)かしか定義できない
const(void)*にあたるものがない
0492デフォルトの名無しさん2011/03/13(日) 00:53:53.49
http://ideone.com/8I6aK
http://ideone.com/hwZln
http://ideone.com/INckh

これを見る限りだと、単純にdupのバグっぽいな。
0493デフォルトの名無しさん2011/03/13(日) 06:26:28.93
>>409
パッチ上げられてたぞ
完全に直ってるのかしらんけど
0494デフォルトの名無しさん2011/03/13(日) 12:33:06.67
ifでテンプレート引数を絞り込むのって乱用するべきじゃないな
細かくやりすぎると>>409みたいに想定漏れを招く
どうせテンプレート内でエラーになるんだから通してしまえばいい
04954942011/03/13(日) 12:33:57.11
>>404だった…
404だから見えなかったんだ
0496デフォルトの名無しさん2011/03/13(日) 15:11:09.55
>>494
これ、まさにコンセプトでも懸念されてたことなんじゃないか
0497デフォルトの名無しさん2011/03/13(日) 15:56:47.22
static if で実現できることはそっちでやった方がいいお

Constraint のシンタックスハイライトに対応するIDEは登場するのかなー?
0498デフォルトの名無しさん2011/03/13(日) 18:17:04.16
テンプレート制約って&&で繋げるよりもifの行を増やす方向の方がいいなあ
&&を使った今の状況だとどの条件に引っかかったかが長々と表示されてすげー分かりにくい
0499デフォルトの名無しさん2011/03/13(日) 19:39:02.33
プリプロセッサを無くした代わりにポストプロセッサが必要になりました、と
0500デフォルトの名無しさん2011/03/13(日) 20:13:11.61
>>498
というと、どうかく?
0501デフォルトの名無しさん2011/03/13(日) 20:22:39.33
>>500
std.container.SList.thisで例えれば、
this(Stuff)(Stuff stuff)
if (isInputRange!Stuff
    && isImplicitlyConvertible!(ElementType!Stuff, T)
    && !is(Stuff == T[]))
{
これを、
this(Stuff)(Stuff stuff)
if (isInputRange!Stuff)
if (isImplicitlyConvertible!(ElementType!Stuff, T)
if (!is(Stuff == T[])
{
こう書いて、引っかかったifを示してくれればいいなあとか思う
0502デフォルトの名無しさん2011/03/13(日) 20:35:55.68
>>501
いいかも
0503デフォルトの名無しさん2011/03/13(日) 20:47:43.33
ubyte* p;があるとして
ubyte[] r = p[0..n];したときのrってスタック上に確保されないで
ヒープ上でnewされてRangeかなんかのインスタンスになっちゃいます?
0504デフォルトの名無しさん2011/03/13(日) 21:39:08.41
それだけでは、内容のコピーはされない。pの示す先を直接参照する格好
r ~= 0; などすればコピーされるけど
0505デフォルトの名無しさん2011/03/13(日) 22:20:08.61
>>504
rの持ってる情報ってpへのポインタとlengthくらいだと思うんですけど
これはスタック上かGC管理のヒープ上のどちらに確保されるんでしょうか
0506デフォルトの名無しさん2011/03/13(日) 22:33:36.37
>>503の例だと新たに確保はされず、「共有」される
0507デフォルトの名無しさん2011/03/13(日) 22:51:20.65
>>506
ありがとうございます
0508デフォルトの名無しさん2011/03/13(日) 22:53:34.34
lengthどこ行った?
0509デフォルトの名無しさん2011/03/13(日) 23:00:33.68
こういうソース見て目からウロコが落ちた、と思った
union{
 wchar[] dstring;
 DStringW filename; // 配列ヘッダの構造体
}
struct DStringW{
 uint length;
 wchar* pointer;
}
0510デフォルトの名無しさん2011/03/13(日) 23:23:15.97
特に珍しい構造でもあるまい
0511デフォルトの名無しさん2011/03/14(月) 10:01:45.79
>>505
コンパイラによる。
でもそもそも、本当にそんなことを気にしないといけないプログラムを作っているのか?
■ このスレッドは過去ログ倉庫に格納されています