D言語 Part34©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
2016/01/14(木) 17:59:53.06ID:vRAUMBFP
std.experimental.yesnogc
http://forum.dlang.org/post/n76qh9$2hlo$1@digitalmars.com

おなまえ募集
2016/01/15(金) 15:37:05.03ID:2/bjUIYj
std.experimental.yeslolitanotouch
383デフォルトの名無しさん
垢版 |
2016/01/16(土) 10:21:44.91ID:CPZavs1f
64bitのWin32対応DLL作りたいんだけど?
384デフォルトの名無しさん
垢版 |
2016/01/16(土) 15:12:02.78ID:CPZavs1f
それぞれ微妙に主張が違う気がす
https://gist.github.com/repeatedly/2470712
https://dlang.org/dmd-windows.html (-m64)
http://wiki.dlang.org/Installing_DMD_on_64-bit_Windows_7_(COFF-compatible)
http://www.ku6.jp/report/65.html
http://stackoverflow.com/questions/2376816/how-well-does-d-support-64-bit
2016/01/16(土) 15:55:41.85ID:qeKxK5Cv
>>383
http://wiki.dlang.org/Win32_DLLs_in_D
ここのmydll.dの64bit版なら
dmd -m64 -shared
2016/01/16(土) 15:57:39.55ID:qeKxK5Cv
あれ途中で切れた。
dmd -m64 -shared mydll.d dll.d mydll.def
2016/01/16(土) 16:12:25.40ID:qeKxK5Cv
>>384 それぞれ書かれた時期が違うんじゃまいか
2016/01/16(土) 16:31:09.62ID:eTAXMCcj
DMD で単純な x64 バイナリを作るところまでは行けてるんでしょ?
Win32 DLL も作れるんでしょ?
x64 で Win32 App と結合できるかって話でしょ?
出来ないと思うけど
2016/01/16(土) 18:04:51.96ID:w507ceUH
ブリッジ役のDLLも用意して64<-->32間をプロセス間通信でうんたらかんたら
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
やっぱりダミーを追加するしかないらしい
391336
垢版 |
2016/01/22(金) 20:16:27.79ID:6NMzASC5
わぁ!どうもありがとう!まだ書きかけ&お粗末ですが、その時の成果物です。
https://github.com/garlic-flavor/D7z
ツッコミ/プルリクお待ちしております。m(_ _)m
2016/01/22(金) 22:46:33.96ID:ph7VTr94
いつのまにか公式が改装してた
なんかすごくプログラミング言語の公式ページっぽい
2016/01/25(月) 22:17:17.47ID:bhSAv5/D
/r/programming 見てるとほぼ毎日Dの記事があって、ついに時代がきたか感がある
394デフォルトの名無しさん
垢版 |
2016/01/27(水) 00:28:20.96ID:KSmE0N2z
scope(exit)はスコープ抜けるときに実行されるけどさ、
呼び出し元のスコープ抜けるときに実行されるような処理を書く方法って存在しないのかな

例えば
foo(){
  hoge();
}
で、hoge()の定義内に書いてfoo()の最後に実行されるようなやつ
2016/01/27(水) 00:56:43.14ID:0fSZRkm9
そんなんバグの地雷原やがな
2016/01/27(水) 01:33:09.39ID:EmUF4YzU
部品化の概念を否定するその硬派な姿勢、俺は評価するよ
397デフォルトの名無しさん
垢版 |
2016/01/27(水) 01:46:23.73ID:KSmE0N2z
事故解決。mixinという道具があったではないか
2016/01/27(水) 05:55:19.47ID:mt1RyfFz
>>394-396
scoped型をhogeが返せばいいんじゃね、って思ったけど
もうscoped型って無くなったんだっけ?
2016/01/27(水) 09:42:58.44ID:PS/Qpp4W
呼び出し元で scope(exit)
2016/01/27(水) 23:58:59.71ID:W8pZv3Sr
std.datetime.measureTime がそんなんだったような。
2016/01/28(木) 12:36:28.83ID:U7RHxiIq
2.070
2016/01/28(木) 15:55:14.52ID:AP1O7sAh
もう2.070か早い
2016/01/28(木) 23:48:56.81ID:tnawcIV/
core.sys.windowsのナカミがおきかわっとるー\(・∀・)/
2016/01/29(金) 00:16:04.81ID:iqnom6tW
>>328 なおった!
405デフォルトの名無しさん
垢版 |
2016/02/01(月) 11:49:31.71ID:C4njzqYk
もしかしてdmcって64bitのコンパイルオプションないの?
2016/02/01(月) 12:03:33.19ID:gmWomOLn
ないっしょ
16bit ならまだあるかもしれない
それに optlink まで含めると 32 ですら騙し騙し使ってる状況
2016/02/02(火) 23:16:29.97ID:N0vbs9wX
今さらだけどD用のお勧めのGUIライブラリある?
マルチプラットフォームで。
2016/02/03(水) 11:18:15.33ID:Drvvyslw
>>407
お勧めはDWT
対抗はDlangUI

DWT http://qiita.com/sfujita/items/18bd56ae505c4b3de7b3
DlangUI http://qiita.com/namachan10777/items/5a792bc1ac93ce1ccb1c
2016/02/03(水) 12:53:31.69ID:5/pxQ4tU
wxD
2016/02/03(水) 13:07:25.53ID:uEOUJl1K
自分でメンテする気があれば正直どれでもいいし
そうじゃなければ D でGUIなんて考えないほうがいい
2016/02/03(水) 15:13:27.73ID:IpVTmFVK
LDCからEmscripten通してHTML5にでも変換したほうがいいんじゃない?(適当)
412デフォルトの名無しさん
垢版 |
2016/02/03(水) 15:49:20.75ID:5/pxQ4tU
時代は io.js + Electron ですねわかります
413デフォルトの名無しさん
垢版 |
2016/02/03(水) 19:08:22.05ID:JdStCQ++
ぜんぜんわからない

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

>>409
あれ、Dの利点あんまりないですやん><
2016/02/04(木) 17:17:07.59ID:ob+62gtm
DでwrapしたPythonObjectでwxPython使ったら意外と便利だったな
2016/02/05(金) 19:27:30.79ID:HabP63UN
DFLがマルチプラットフォームになれば文句ないんだがなぁ
2016/02/05(金) 21:20:24.44ID:hmTKeVMY
どうしてもマルチプラットフォームが必要なら
HTML5 でどうにかする方が現実的
424デフォルトの名無しさん
垢版 |
2016/02/06(土) 20:54:27.15ID:2Uy/PFwr
もう仕様固まってきて大きな動きないのにサードパーティのライブラリが整備されないのは
Dが今まで積んできた業かな
425デフォルトの名無しさん
垢版 |
2016/02/07(日) 18:20:11.44ID:eIUfmNby
これからに期待します
426デフォルトの名無しさん
垢版 |
2016/02/08(月) 17:21:11.18ID:LpGg46bP
Oh my
2016/02/08(月) 18:04:50.88ID:M0j0fnEJ
Oh my D-lang, Oh my D-lang,
Oh my D-lang Clementine.
2016/02/13(土) 18:13:48.32ID:tVuFpQtK
単にユーザが少ないんじゃね
2016/02/13(土) 20:34:35.13ID:OlzkmTVA
ライブラリが整備されないのはなぜ? ユーザーが少ないから
ユーザーが少ないのはなぜ? ライブラリが整備されないから
2016/02/13(土) 20:41:50.43ID:tVuFpQtK
パワフルなユーザが少ないのかな……うん
2016/02/15(月) 18:05:56.16ID:+caJiYS4
コンパイル時にテキスト読み込んでさ、
行数の数だけ文字列mixinして関数作りたいんだけど
任意回数の文字列ミックスインのループってどう書くんだろう・・・・・・。
2016/02/15(月) 18:13:18.59ID:TvNTryet
仕様変更しすぎたな
2016/02/15(月) 18:53:15.56ID:8Os0TVn8
>>431
先に文字列加工して最後にまとめてミックスイン出来ないのん?
2016/02/15(月) 19:14:52.44ID:Dah95cUu
LDC 0.17リリースおめでとう。

https://github.com/ldc-developers/ldc/releases/tag/v0.17.0

本家に追いつくまであと少し。
2016/02/15(月) 19:20:06.77ID:8Os0TVn8
本家に追いつくのは無理だから mingw で動くように戻しておくれ
2016/02/15(月) 20:48:59.61ID:RiiAF+b/
ここ1, 2年くらい大した仕様変更ないような
2016/02/15(月) 21:17:10.53ID:NUVEFX4y
>>436
過去に仕様変更し過ぎたせいでD言語=仕様変更っていう認識が一般に広まったせいじゃね?
2016/02/15(月) 22:47:40.09ID:obZmlxnC
>>431
mixin template loop(string s,r...){mixin(s); mixin loop!(r);}
mixin template loop(string s){mixin(s);}
2016/02/16(火) 16:56:10.74ID:qagv5yy3
信用は一度失うと取り戻すのは困難ってことさね

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

よし!あとはまかせたぞ!
2016/02/18(木) 12:23:28.05ID:S96kZ0X7
もう Julia でいいような気がしてきた
手遅れかもな
2016/02/19(金) 13:09:30.63ID:Ap7HgcUx
http://www.tiobe.com/index.php/tiobe_index
少し人気出てきた
2016/02/19(金) 13:59:24.31ID:hw/X0Y/j
簡単過ぎて調べなくても判ってしまう言語だと人気が無いことになるな
2016/02/19(金) 18:48:50.77ID:3Pzm9drf
D言語って名前のイメージが悪くなっちゃってるからD++とかに変えよう
2016/02/19(金) 20:15:44.55ID:unMO5CFj
求められているのは D-
2016/02/20(土) 14:46:25.61ID:X13YwWkx
マイナスなんか要らないわ
2016/02/20(土) 16:07:27.61ID:WzAGBuRR
D#
2016/02/21(日) 10:34:55.98ID:zmvsu5mb
>>440
exeはnativeなDの足元にも及ばない
2016/02/21(日) 22:57:01.53ID:satROU6m
D未満はおっぱいと呼ばない
2016/02/22(月) 02:56:00.48ID:gsexe38f
D†
2016/02/22(月) 12:16:25.94ID:Y1bHL8fN
D<0
451デフォルトの名無しさん
垢版 |
2016/02/27(土) 03:16:45.72ID:GUJ5wO/X
iota(-10,1)やrecurrence!(q{ -n })(0)がintになるのに
sequence!(q{ -n })だけuintで負の値を使えないんですがこれって何か理由があるんですかね?
2016/02/29(月) 00:18:12.07ID:zsA7yhFD
>>451 ソース見た感じ、
recurrence!(q{-n})(0) は 0 の型とってる→int
sequence!(q{-n}) は -n の型とってる、ここで n の型は size_t → size_t
ってことみたい。
453デフォルトの名無しさん
垢版 |
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になってるんですね
単に気になっただけなんですけど
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!
2016/02/29(月) 15:52:25.48ID:iGEmA67j
なんか途中で切れた
minPosとか使ってるんですが、しっくりこなくて
2016/02/29(月) 16:26:00.44ID:VNz3PeoZ
>>454
std.algorithm使って関数型っぽく

arr.reduce!max.writeln;
2016/02/29(月) 22:57:05.78ID:6Vt2kK/P
リデュースリユースリサイクル♪
2016/03/01(火) 00:52:26.74ID:joyDtek2
LDC 1.0αでとる。
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でエラーが出るのはどういう理屈なんですか?
2016/03/01(火) 21:12:38.53ID:oyuxQPKV
arr.lengthが右辺値を返すから?
2016/03/01(火) 21:23:46.68ID:CYOvNsDD
out が付いてるなら当然としか
2016/03/01(火) 21:26:20.10ID:CYOvNsDD
いや、ひょっとして length のセッターを呼んで欲しい…?
流石に無理なんじゃ
463459
垢版 |
2016/03/01(火) 22:02:04.13ID:s5WMaGjg
arr.length = 0とかできるから普通の変数と同じように考えてました。
hogeに渡す時に、ただの右辺値のuintとして評価されるってことですね。
2016/03/01(火) 22:18:28.05ID:BG2OG/pG
できてもいいとは思うけどな
内部的には一時変数が作られるとかで
465デフォルトの名無しさん
垢版 |
2016/03/02(水) 03:05:50.56ID:S8FWiipj
もしlengthをいじりたいなら深く考えず
void nobasu(T)(ref T[] arr) {
 arr.length ++;
}
とかでいいんじゃ?
466459
垢版 |
2016/03/02(水) 21:10:33.37ID:Py15QFNz
lengthをいじりたいというより、out引数を持つ関数を使いたかったんですよね。
なのでこうしました。
uint lenght;
hoge(length);
arr.length = length;
467454
垢版 |
2016/03/07(月) 16:09:07.92ID:KpyO6Zd7
>>456
reduce!maxか!
遅くなりましたが、ありがとうございました。
2016/03/07(月) 16:22:17.87ID:nbAKle/L
遅い、遅すぎる
時代は既に reduce から fold に変わろうとしているのに
2016/03/07(月) 17:38:25.23ID:hzTv2Fg2
とはいえまだマージされただけでリリースはされてないし
内部でreduce使ってるから無くなることはないだろうけどな
2016/03/07(月) 21:13:14.18ID:ZACCB8Ww
struct S { int[] arr; }
S s1;
...
S s2 = s1;

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

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

"-Llegacy_stdio_definitions.lib" とその前の行のカンマを消せばいい
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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