X



D言語 Part34©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net
垢版 |
2015/01/25(日) 12:07:29.52ID:gAd5OZDm
プログラミング言語 D (D Programming Language) について語るスレッドです。

■本家
http://dlang.org/ - 公式(英語)
http://www.kmonos.net/alang/d/ - 公式の和訳 (やや古いので注意)
https://issues.dlang.org/ - D言語バグ報告
https://github.com/D-Programming-Language - D言語開発リポジトリ

■Wiki
http://wiki.dlang.org/ - 公式Wiki
http://dusers.dip.jp/ - D言語友の会(日本語フォーラムあり)

■プログラミング言語D (TDPL: The D Programming Language)
Andrei Alexandrescu 日本語版
http://www.shoeisha.co.jp/book/detail/9784798131108

ソース貼付サイト http://dpaste.dzfl.pl/
<$><$> https://www.bountysource.com/trackers/383571-d-programming-language

■前スレ
D言語 Part33
http://toro.2ch.net/test/read.cgi/tech/1396145538/

■過去スレ、関連スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=D%8C%BE%8C%EA&;sf=2&all=on&view=table&shw=5000
0388デフォルトの名無しさん
垢版 |
2016/01/16(土) 16:31:09.62ID:eTAXMCcj
DMD で単純な x64 バイナリを作るところまでは行けてるんでしょ?
Win32 DLL も作れるんでしょ?
x64 で Win32 App と結合できるかって話でしょ?
出来ないと思うけど
0390デフォルトの名無しさん
垢版 |
2016/01/22(金) 17:45:10.29ID:tiw7VxmH
>>336
> DのIUnknownの宣言のReleaseの後にダミーのメソッドを、
> ・2個追加することでC++で実装されたinterfaceをDから呼び出すことが、
> ・1個追加することでDで実装されたinterfaceをC++から呼び出すことが、
> それぞれできたのですが、とてもまともな解決策とは思えません。

https://issues.dlang.org/show_bug.cgi?id=15589#comment_text_0
やっぱりダミーを追加するしかないらしい
0391336
垢版 |
2016/01/22(金) 20:16:27.79ID:6NMzASC5
わぁ!どうもありがとう!まだ書きかけ&お粗末ですが、その時の成果物です。
https://github.com/garlic-flavor/D7z
ツッコミ/プルリクお待ちしております。m(_ _)m
0392デフォルトの名無しさん
垢版 |
2016/01/22(金) 22:46:33.96ID:ph7VTr94
いつのまにか公式が改装してた
なんかすごくプログラミング言語の公式ページっぽい
0393デフォルトの名無しさん
垢版 |
2016/01/25(月) 22:17:17.47ID:bhSAv5/D
/r/programming 見てるとほぼ毎日Dの記事があって、ついに時代がきたか感がある
0394デフォルトの名無しさん
垢版 |
2016/01/27(水) 00:28:20.96ID:KSmE0N2z
scope(exit)はスコープ抜けるときに実行されるけどさ、
呼び出し元のスコープ抜けるときに実行されるような処理を書く方法って存在しないのかな

例えば
foo(){
  hoge();
}
で、hoge()の定義内に書いてfoo()の最後に実行されるようなやつ
0397デフォルトの名無しさん
垢版 |
2016/01/27(水) 01:46:23.73ID:KSmE0N2z
事故解決。mixinという道具があったではないか
0405デフォルトの名無しさん
垢版 |
2016/02/01(月) 11:49:31.71ID:C4njzqYk
もしかしてdmcって64bitのコンパイルオプションないの?
0406デフォルトの名無しさん
垢版 |
2016/02/01(月) 12:03:33.19ID:gmWomOLn
ないっしょ
16bit ならまだあるかもしれない
それに optlink まで含めると 32 ですら騙し騙し使ってる状況
0407デフォルトの名無しさん
垢版 |
2016/02/02(火) 23:16:29.97ID:N0vbs9wX
今さらだけどD用のお勧めのGUIライブラリある?
マルチプラットフォームで。
0410デフォルトの名無しさん
垢版 |
2016/02/03(水) 13:07:25.53ID:uEOUJl1K
自分でメンテする気があれば正直どれでもいいし
そうじゃなければ D でGUIなんて考えないほうがいい
0412デフォルトの名無しさん
垢版 |
2016/02/03(水) 15:49:20.75ID:5/pxQ4tU
時代は io.js + Electron ですねわかります
0413デフォルトの名無しさん
垢版 |
2016/02/03(水) 19:08:22.05ID:JdStCQ++
ぜんぜんわからない

D普及のために、できるだけわかりやすく情報を提供してください。切に望みます
0414デフォルトの名無しさん
垢版 |
2016/02/03(水) 19:10:01.79ID:JdStCQ++
Cのインタフェースがていきょうされていれば、利用できる
これが鍵なんだろうけど、初心者むけではない
0415デフォルトの名無しさん
垢版 |
2016/02/03(水) 19:11:50.36ID:JdStCQ++
DWTは、マルチプラットフォームではないのでは?
0416デフォルトの名無しさん
垢版 |
2016/02/03(水) 19:15:47.11ID:JdStCQ++
わからんわからんわからんわからんわからんわからんわからんわからん
0417デフォルトの名無しさん
垢版 |
2016/02/03(水) 20:44:42.00ID:NLGo/bvc
自分は何がしたいのか、何ができなかったのか
情報がなければ答えようもなかろう
0420デフォルトの名無しさん
垢版 |
2016/02/04(木) 15:18:46.80ID:wiwVjChn
>>408
dクス
やっぱDWTが定番かー
DlangUI、最初のmixinが美しくないなぁ・・・・・・(笑)

>>409
あれ、Dの利点あんまりないですやん><
0423デフォルトの名無しさん
垢版 |
2016/02/05(金) 21:20:24.44ID:hmTKeVMY
どうしてもマルチプラットフォームが必要なら
HTML5 でどうにかする方が現実的
0424デフォルトの名無しさん
垢版 |
2016/02/06(土) 20:54:27.15ID:2Uy/PFwr
もう仕様固まってきて大きな動きないのにサードパーティのライブラリが整備されないのは
Dが今まで積んできた業かな
0425デフォルトの名無しさん
垢版 |
2016/02/07(日) 18:20:11.44ID:eIUfmNby
これからに期待します
0426デフォルトの名無しさん
垢版 |
2016/02/08(月) 17:21:11.18ID:LpGg46bP
Oh my
0429デフォルトの名無しさん
垢版 |
2016/02/13(土) 20:34:35.13ID:OlzkmTVA
ライブラリが整備されないのはなぜ? ユーザーが少ないから
ユーザーが少ないのはなぜ? ライブラリが整備されないから
0431デフォルトの名無しさん
垢版 |
2016/02/15(月) 18:05:56.16ID:+caJiYS4
コンパイル時にテキスト読み込んでさ、
行数の数だけ文字列mixinして関数作りたいんだけど
任意回数の文字列ミックスインのループってどう書くんだろう・・・・・・。
0437デフォルトの名無しさん
垢版 |
2016/02/15(月) 21:17:10.53ID:NUVEFX4y
>>436
過去に仕様変更し過ぎたせいでD言語=仕様変更っていう認識が一般に広まったせいじゃね?
0439デフォルトの名無しさん
垢版 |
2016/02/16(火) 16:56:10.74ID:qagv5yy3
信用は一度失うと取り戻すのは困難ってことさね

D言語について少しでも調べてもらえば今そうでないのはわかることだから、
D言語を知らない人がD言語に触れる機会を増やす・・・
つまりD言語で書かれた一般向けアプリがもっと出ればいいわけだ

よし!あとはまかせたぞ!
0451デフォルトの名無しさん
垢版 |
2016/02/27(土) 03:16:45.72ID:GUJ5wO/X
iota(-10,1)やrecurrence!(q{ -n })(0)がintになるのに
sequence!(q{ -n })だけuintで負の値を使えないんですがこれって何か理由があるんですかね?
0452デフォルトの名無しさん
垢版 |
2016/02/29(月) 00:18:12.07ID:zsA7yhFD
>>451 ソース見た感じ、
recurrence!(q{-n})(0) は 0 の型とってる→int
sequence!(q{-n}) は -n の型とってる、ここで n の型は size_t → size_t
ってことみたい。
0453デフォルトの名無しさん
垢版 |
2016/02/29(月) 07:53:56.99ID:9aTNra24
 alias compute = binaryFun!(fun, "a", "n");
 alias ElementType = typeof(compute(State.init, cast(size_t) 1));
で、nにcast(size_t)1を入れてsize_tになってるんですね
単に気になっただけなんですけど
0454デフォルトの名無しさん
垢版 |
2016/02/29(月) 15:44:30.93ID:iGEmA67j
配列の中の最大値を探すときって普通どうやるんでしょうか

enum arr = [3, 1, 4, 1, 5, 9, 2];

aliasSeqOf!arr.max.writeln; // 要std.metaなのと定数でないとダメ
arr.minPos!
0459デフォルトの名無しさん
垢版 |
2016/03/01(火) 21:04:14.81ID:s5WMaGjg
void hoge(T)(out T t) {...}

uint x;
hoge(x); // コンパイル通る
int[] arr;
hoge(arr.length); // コンパイルエラー(Error: template hoge cannot deduce function from argument types !()(uint), candidates are:)

arr.lengthでエラーが出るのはどういう理屈なんですか?
0462デフォルトの名無しさん
垢版 |
2016/03/01(火) 21:26:20.10ID:CYOvNsDD
いや、ひょっとして length のセッターを呼んで欲しい…?
流石に無理なんじゃ
0463459
垢版 |
2016/03/01(火) 22:02:04.13ID:s5WMaGjg
arr.length = 0とかできるから普通の変数と同じように考えてました。
hogeに渡す時に、ただの右辺値のuintとして評価されるってことですね。
0465デフォルトの名無しさん
垢版 |
2016/03/02(水) 03:05:50.56ID:S8FWiipj
もしlengthをいじりたいなら深く考えず
void nobasu(T)(ref T[] arr) {
 arr.length ++;
}
とかでいいんじゃ?
0466459
垢版 |
2016/03/02(水) 21:10:33.37ID:Py15QFNz
lengthをいじりたいというより、out引数を持つ関数を使いたかったんですよね。
なのでこうしました。
uint lenght;
hoge(length);
arr.length = length;
0467454
垢版 |
2016/03/07(月) 16:09:07.92ID:KpyO6Zd7
>>456
reduce!maxか!
遅くなりましたが、ありがとうございました。
0469デフォルトの名無しさん
垢版 |
2016/03/07(月) 17:38:25.23ID:hzTv2Fg2
とはいえまだマージされただけでリリースはされてないし
内部でreduce使ってるから無くなることはないだろうけどな
0470デフォルトの名無しさん
垢版 |
2016/03/07(月) 21:13:14.18ID:ZACCB8Ww
struct S { int[] arr; }
S s1;
...
S s2 = s1;

構造体のデフォのコピーコンストラクトを使った場合、メンバarrはシャローコピーされますよね?
ディープコピーしたい場合、コピーコンストラクタを書き換えるか、ディープコピー用のメンバ関数を書く方法が思いつきますけど、
もっと手軽な方法はないでしょうか?
0471デフォルトの名無しさん
垢版 |
2016/03/07(月) 22:22:23.50ID:hzTv2Fg2
前者はpostblitを指してるんだと思うけど、すでに十分手軽じゃね?
this(this){arr=arr.dup;}

ところでマニュアルによればpostblitは初期化時の話らしいけど、代入時にも呼ばれるのは何故だ
0472デフォルトの名無しさん
垢版 |
2016/03/07(月) 22:31:36.23ID:ZACCB8Ww
>>471
構造体なのでコピーコンストラクタじゃなくてpostblitでしたね。
this(this){arr=arr.dup;}を構造体ごとに書いていかないといけないのが面倒くさく感じました。
0473デフォルトの名無しさん
垢版 |
2016/03/07(月) 22:49:33.64ID:hzTv2Fg2
>>472
つまり1回書くだけで全ての構造体に一括して適用されるような方法を期待してる?
さすがに無い気がするし、むしろあったら怖い
せいぜいmixinして文字数削る程度じゃね
0474デフォルトの名無しさん
垢版 |
2016/03/08(火) 00:13:35.69ID:P+r5NzGC
>>473
自分で書くならtupleofとtraitでdupテンプレートを書いて
S s2 = s1.dup;
っていうのを思いつきました。
0477デフォルトの名無しさん
垢版 |
2016/03/12(土) 05:14:08.80ID:/9wKb/bF
>>433
今更だけどありがとう、
そんなアタリマエのことを全然思いつかなかったw
CTFEすげー(今更)
0478デフォルトの名無しさん
垢版 |
2016/03/15(火) 00:58:06.47ID:sgjiEx6Z
VS2013とLDCでビルドしたら、
LINK : fatal error LNK1104: cannot open file 'legacy_stdio_definitions.lib'
というエラーが出たんですけど、原因は何が考えられますか?
0480デフォルトの名無しさん
垢版 |
2016/03/15(火) 02:36:06.05ID:sgjiEx6Z
>>479
うーん、わからないです。
legacy_stdio_definitions.libがHDDの中にないし、ぐぐってもなんなのかよくわからない。
0481デフォルトの名無しさん
垢版 |
2016/03/15(火) 07:36:35.68ID:vxrFHeSb
>>478
デフォルトは VS2015 の設定だから
etc/ldc2.conf の該当行 を書き換えてくれってどっかに書いてあった

"-Llegacy_stdio_definitions.lib" とその前の行のカンマを消せばいい
0482デフォルトの名無しさん
垢版 |
2016/03/15(火) 15:54:15.40ID:sgjiEx6Z
>>481
ldc.confにlegacy_stdio_definitions.libはありませんでした。

色々、調べてて気づいたんですけど、LDCを使うにはLLVMもインストールしないといけないですか?
LLVMのバイナリは公開されていないみたいだし、ビルドしないといけないとなると面倒ですね。
日本語の解説サイトもなさそうだし難易度が高い。
0483デフォルトの名無しさん
垢版 |
2016/03/15(火) 19:09:38.41ID:vxrFHeSb
忘れてた VS2015 以外のバージョンで動かすには
LDC をその設定で再構築してくれと書いてあった
今探してもどこだったか見当たらないけど…

たぶん VS2015 入れるのが一番簡単
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況