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


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

D言語 Part31



1 名前:Win64をやりたい場合はMSVCwo [2013/01/21(月) 12:39:54.40 ]
プログラミング言語 D (D Programming Language) について語るスレッドです。

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

■Wiki
dusers.dip.jp/ - D言語友の会(日本語フォーラムあり)
prowiki.org/wiki4d/ - Wiki4D(公認Wiki)

■前スレ
D言語 Part30
toro.2ch.net/test/read.cgi/tech/1343660743/

■過去スレ、関連スレ
makimo.to:8000/cgi-bin/search/search.cgi?q=D%8C%BE%8C%EA&sf=2&all=on&view=table&shw=5000

141 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 02:15:36.29 ]
dupも欲しいな

142 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 02:23:16.25 ]
>>140
object.destroyのaliasでclearがあるけどこれ呼ばれてるんじゃね?

>>141
dup使えたぞ
ドキュメント無さそうだがww

143 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 02:39:50.10 ]
マジダclearできた

替わりにこうしてた・・・
typeof(h) tmp;
tmp.swap(h);

で、h.dup.swap(h);がコンパイル通らなくて泣いてた

144 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 02:41:09.83 ]
あれ?よく考えたらh.dup.swap(h);意味ないじゃん。何やってんだ俺

145 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 11:40:10.23 ]
>>140-142
い、一体いつから…

ヒャアやっぱDはたまんねぇな!

146 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 11:49:37.17 ]
dupはあるんだった
何かと勘違いしたわ

147 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 16:28:43.01 ]
ポトペタなRAD今作ってるからGUI厨はちょっと待ってろ

148 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 16:38:16.81 ]
♪〜(・ε・。)ヒューー

boost licで頼む

149 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 16:40:58.13 ]
ポトペタとかは比較的どうでもいいんだ
まともに保守されてるだけでもぶっちぎりに優れたライブラリになれる



150 名前:デフォルトの名無しさん mailto:sage [2013/02/03(日) 18:32:28.27 ]
逆に考えるんだ
唯一まともに保守されているから
公式のライブラリとして存在できていると考えるんだ

151 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 13:23:14.36 ]
UDAってCTFEした値も取ってこれるのか
無茶しやがって

152 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 13:36:21.90 ]
シンボルが欲しくなるな

153 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 23:48:43.40 ]
templateは要素がひとつで同名って条件でtemplate名称を省略できるって
公式のどこかで見た記憶があるんだけど下の例でクラスのAをtemplate名称なしで
使えちゃうのは合法?

template A(T){
 class A{}
 T s; ←A.Aとしてclassを参照するために邪魔になると思われるもの
}


auto x = new A!(int).A();
ではなく
auto x = new A!(int)();
として使用できてしまう。

154 名前:前々スレ(Part29)より mailto:sage [2013/02/05(火) 23:57:39.76 ]
143 :営利利用に関するLR審議中@詳細は自治スレへ : 2012/04/08(日) 17:55:55.18
>>140-141
メンバ一つに限るっていう条件は 2.058 で外れたとかどこかで見たような

Eponymous Template っていうらしい

155 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 00:06:06.75 ]
Change Log見てもそれっぽいこと書いてないから怖いな・・
ありがとん

156 名前:デフォルトの名無しさん [2013/02/08(金) 01:45:26.22 ]
Templateパラメータで渡された型のクラスインスタンスをalias thisする方法あります?

struct S(T){
T t;
alias t this;
}

T型が同じファイルに定義されている場合はコンパイル通るけど
別ファイルの場合Tのメンバを呼ぶコードがundefined identifierとなりました

157 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 02:22:51.53 ]
Dで作ったDLLをFreeLibraryするとホスト側が止まる(というか処理が戻ってこない)んですけど・・・

158 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 10:53:08.11 ]
>>156
通ると思うけど…
リンク漏れの Symbol Undefined じゃなくて?

159 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 18:30:45.33 ]
>>157
ソース無いからどうしようもないけど
静的呼び出ししたらどうなるよ?



160 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 19:34:02.45 ]
>>159
今やってみました。静的リンクだと問題なく呼び出せました。
目的は実行時に激しくDLLのロード/アンロードをすることなのでLoadLibrary/FreeLibraryが必要だと思ってます。
DLL側、使用側のソースです→dpaste.dzfl.pl/b47c098b
試しにDMDで作ったものでない(たとえば、SDLの)DLLを読み込ませてみましたが、そっちでは問題なくLoad/Freeできました

なんかDLLの作り方間違えてるのかな・・

161 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 21:44:06.14 ]
>>160
横レス
なぜか最後のwriteln の中で死んでるっぽい
# デバッガが使えればみんな悲しまずに済むのに・・・!

試しにメッセージボックスに変えてみたらイケた
import core.sys.windows.windows;
MessageBoxA(null, "4 end".ptr, "message".ptr, 0);

162 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 22:15:23.76 ]
core.runtimeのloadLibrary/unloadlibraryを呼んだらどうなる?
なんかGC関係の追加処理してそうだけど

163 名前:デフォルトの名無しさん [2013/02/08(金) 22:22:33.15 ]
呼び出し規約

164 名前:デフォルトの名無しさん mailto:sage [2013/02/08(金) 22:31:37.13 ]
>>163 よく読め
>>160はDLL内の関数を呼んではいないぞ

165 名前:デフォルトの名無しさん [2013/02/08(金) 22:40:40.32 ]
>>164
落ちる場所のアセンブリよく読め
スタック巻き戻してretするとこで落ちてる
DLL内の関数の呼び出し規約とは言ってない

166 名前:160 mailto:sage [2013/02/08(金) 23:27:18.56 ]
呼び出し規約と聞いてよくわからないままいろいろ試しました。
alias extern(D) void* function(in char*) LoadLibrary_t;
alias extern(D) uint function(void*) FreeLibrary_t;
void main() {
  writeln("1 load");
  auto p = (cast(LoadLibrary_t)&LoadLibraryA)("plugin.dll");
  writeln("2 ", (p is null) ? "error" : "ok");
  writeln("3 free");
  (cast(FreeLibrary_t)&FreeLibrary)(p);
  writeln("4 end");
}
なんかこんな利用側コードで結局エラーが出なくなりました。
なんでDの呼び出し規約で正しい動きをするのか
まったくわけわかんないんですがこれでいいんでしょうか・・・

167 名前:160 mailto:sage [2013/02/08(金) 23:38:46.24 ]
動いたように見えただけでなんも動いてなかった・・・適当なこと書いてごめんなさい

168 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 00:09:10.44 ]
d.puremagic.com/issues/show_bug.cgi?id=1550
D DLLs close standard input/output streams when unloading

169 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 00:30:31.25 ]
2007-10-07

(´・ω・`)



170 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 00:33:55.29 ]
マジか。つまりDMDのDLL作成機能に実用性なし!
通りでD言語で作られたライブラリが一切DLL化されないわけだぜ

171 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 00:47:09.49 ]
なあ、手元で>>160を動かしたら、何の問題もなく動いたんだが……

172 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 00:47:13.47 ]
いや

173 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 00:57:20.66 ]
マジマジ。ちゃんと全部出る。一行も変更してない。

1 load
2 ok
3 free
4 end

174 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 01:10:41.83 ]
kankyouwo

175 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 01:11:38.05 ]
xp

176 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 01:18:43.24 ]
7 dame

177 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 08:12:52.75 ]
mamamajika

178 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 16:31:15.36 ]
>>156のわかった
alias thisするメンバがprivateだとundefined identifierになるぽい
これって動作としては正しい?
privateにしないと外からalias this対象がメンバとして触れちゃうから問題な気が・・

ideone.com/kVVl02

179 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 17:03:54.30 ]
>>178
逆に private な alias this はどんな動作になるべきだと考えてるの?



180 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 17:28:02.48 ]
>>178
エスパーだが、こういうことがしたいのではないか
struct S
{
private:
T x;
public:
@property T getX() { return x; }
alias getX this;
}

181 名前:デフォルトの名無しさん mailto:sage [2013/02/09(土) 17:44:02.76 ]
>>180
YES!

182 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 22:29:44.30 ]
あれ、clear って deprecated になってるじゃん
destroy の方が新しいのか
逆だと思ってたわ

183 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 23:08:46.70 ]
デデデデストローイ

184 名前:デフォルトの名無しさん mailto:sage [2013/02/11(月) 23:22:19.46 ]
これって破壊的変更なんですかね

185 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 13:42:22.61 ]
>>171
もしかしてDMD以外のコンパイラを使ってないか?

186 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 14:05:39.37 ]
>>185
俺もxpでdmdだが問題出ない
load〜freeを100回ループさせても正常

187 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 14:22:30.57 ]
未だに修正されない理由はこれか!

188 名前:デフォルトの名無しさん mailto:sage [2013/02/12(火) 14:39:03.09 ]
>>168にある回避策を試すといいかも
副作用出るかは知らないが

189 名前:デフォルトの名無しさん mailto:sage [2013/02/13(水) 19:38:22.65 ]
確かに Win7/64 だと >>168に引っかかってるぽいけど
同じバイナリが WinXP/32 だと普通に動くな



190 名前:デフォルトの名無しさん mailto:sage [2013/02/15(金) 02:52:24.19 ]
同一の領域を指すレンジの距離ってどうにか簡単に得られませんか?

191 名前:デフォルトの名無しさん mailto:sage [2013/02/15(金) 20:19:41.44 ]
1.まず説明する能力を鍛えます

192 名前:デフォルトの名無しさん mailto:sage [2013/02/15(金) 20:25:52.02 ]
auto range1 = [0, 1, 2, 3];
auto range2 = range1.find(2);
assert(distance(range1, range2) == 2);
のdistanceみたいな関数ないですか?

193 名前:デフォルトの名無しさん mailto:sage [2013/02/15(金) 20:53:18.04 ]
import std.algorithm;
range1.countUntil(range2);

194 名前:デフォルトの名無しさん mailto:sage [2013/02/15(金) 20:56:53.49 ]
間違えた
auto range1 = [0, 1, 2, 3];
auto range2 = range1.find(2);
auto range3 = range1.find(3);
assert(distance(range2, range3) == 1);
こっちのほうです。

195 名前:デフォルトの名無しさん mailto:sage [2013/02/15(金) 21:01:53.65 ]
indexOfで場所を取得して差の絶対値を取れば?

196 名前:デフォルトの名無しさん mailto:sage [2013/02/16(土) 08:23:22.80 ]
ややこしい型名のメンバーをautoで書きたい(;;.;;)

197 名前:デフォルトの名無しさん mailto:sage [2013/02/16(土) 10:42:54.48 ]
つ (T)

198 名前:デフォルトの名無しさん mailto:sage [2013/02/16(土) 11:59:49.24 ]
つalias

199 名前:デフォルトの名無しさん mailto:sage [2013/02/16(土) 18:11:00.11 ]
optlink のソースが公開されてるっぽい
アセンブリ 70% とか書いてあるのを見て俺はおまいらに託すことに決めたぜ
https://github.com/DigitalMars/optlink



200 名前:デフォルトの名無しさん mailto:sage [2013/02/17(日) 20:46:00.37 ]
たまに実行時定数がほしい

201 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 12:30:12.77 ]
github ソースから最新を取ってきたら
alias INT = int; の構文がさっそく死んだ…?

202 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 14:29:36.52 ]
wiki.dlang.org
公式wikiがいい感じに作られている
次スレのテンプレに入れておこう

203 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 18:15:17.15 ]
2.062

204 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 18:26:51.04 ]
>>201
2.062 では消されていないようだ
てかgithubのブランチが分かれてよくわからなくなってるんだが

205 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 20:35:50.72 ]
The D Programming Language Conference 2013
dconf.org/

206 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 22:38:15.93 ]
>>204
masterが最新だと思っていたら 2.062 よりはるかに古かったぜ…

207 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 22:49:24.28 ]
gitつかいにくw

208 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 23:29:35.25 ]
opAssignが使えなくなった…
代替法あるん?

class C{
C opAssign(C c){
return this;
}
}
void main(){
C c = new C;
C d;
d = c;
}

Error: class temp.C identity assignment operator overload is illegal

209 名前:デフォルトの名無しさん mailto:sage [2013/02/18(月) 23:52:55.23 ]
同じ型のopAssignはもともと使えんぞ



210 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 00:07:59.38 ]
まじっか
今までコンパイル通ってたから気付かなかった
じゃあみんなディープコピーしたい場合どうしてるん

211 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 00:26:29.64 ]
ポリモが不要なら struct
必要なら mixinとか alias thisで誤魔化す

212 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 00:33:26.34 ]
ウソです
ほんとは cloneとかdeepCopy とかいう関数を地道に呼んでます

213 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 01:21:16.89 ]
そ、そう…がんばる

214 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 19:40:03.01 ]
関数の引数の型で「.lengthが定義されている配列であればなんでも」という記法ってありましたっけ

215 名前:デフォルトの名無しさん mailto:sage [2013/02/19(火) 21:24:53.37 ]
static if (is(typeof(T.init.length)))
とかそういうこと?

216 名前:デフォルトの名無しさん mailto:sage [2013/02/20(水) 00:16:31.82 ]
>>208
classは参照型のセマンティクスを持っているので、自身と同じ型を取るopAssignは定義できない。
一方structは値型のセマンティクスなので、自身と同じ型を取るopAssignでも定義可能。

217 名前:デフォルトの名無しさん mailto:sage [2013/02/20(水) 00:22:32.50 ]
>>153
>templateは要素がひとつで同名って条件でtemplate名称を省略できるって
>公式のどこかで見た記憶があるんだけど下の例でクラスのAをtemplate名称なしで
>使えちゃうのは合法?
>
>template A(T){
> class A{}
> T s; ←A.Aとしてclassを参照するために邪魔になると思われるもの
>}

この用法は合法(TDPLに上の様な場合「メンバsはテンプレートAの外側からは
アクセスできなくなる」と書かれている)。またstd.traitsのテンプレートの多くは
この仕組みを使って細かい実装用のテンプレートを内側に隠している。

218 名前:デフォルトの名無しさん mailto:sage [2013/02/20(水) 00:57:28.94 ]
ありがとうメーン

219 名前:デフォルトの名無しさん mailto:sage [2013/02/20(水) 15:03:21.31 ]
githubから最新ソース使ってる人どれくらいいるかな

・新機能はいらないけどバグ修正はほしい -> staging
・PullRequestを出したい -> master を取得して staging/master/hogeFeatureのどれかへ
・最新機能を試したい -> master を取得して hogeFeatureを各自でマージ
こういう認識で合ってる?
masterとstaging のどちらが新しいと一概に言えないっぽいところが悩ましい

wiki.dlang.org/Development_and_Release_Process
誰か訳してくれないかな〜(チラッ



220 名前:デフォルトの名無しさん mailto:sage [2013/02/20(水) 19:25:56.86 ]
>>214
「arr.lengthとarr[i]が定義されてるようなもの」ってことなら、
std.rangeのhasLengthとisRandomAccessRange使えばいいよ

221 名前:デフォルトの名無しさん mailto:sage [2013/02/20(水) 23:33:05.73 ]
> wiki.dlang.org/Development_and_Release_Process

残念だけど、今のところそこに書かれていることは
「こういうプロセスで開発したら良いんじゃない?」程度で
実際にそれに則って開発がされているわけではない。

stagingブランチは2.060のReleaseから作られているが、現状では
「ベータ版が出てる最中に、Release用のRegression fixとかを
masterとは別に積み上げるためのブランチ」程度の意味しかない。

222 名前:デフォルトの名無しさん mailto:sage [2013/02/20(水) 23:36:28.91 ]
>>220
ありがとうございます。

223 名前:デフォルトの名無しさん mailto:sage [2013/02/21(木) 13:16:57.80 ]
>>221
そうか。ありがとう

224 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 13:08:56.76 ]
2/22 に 222get
ズサ━━━━⊂(゚Д゚⊂⌒`つ≡≡≡━━━━!!

225 名前:デフォルトの名無しさん mailto:sage [2013/02/22(金) 18:49:57.59 ]
惜しい・・・。君は実に惜しい逸材だったよ。

226 名前:デフォルトの名無しさん [2013/02/22(金) 19:04:12.44 ]
もうすぐ22:22ですね

227 名前:デフォルトの名無しさん mailto:sage [2013/02/23(土) 00:07:53.66 ]
>>130
>>>129
>実験パッチは作って試してみる予定。ただ、Fwdref問題がいっぱい出てくるかもしれないから
>対応するかは半々だなあ。

PullReq出して、マージされました。
https://github.com/D-Programming-Language/dmd/pull/1676

大きな問題が出なければ、2.063で使えるようになると思います。

228 名前:デフォルトの名無しさん mailto:sage [2013/02/23(土) 00:40:11.25 ]
2/22 22:22 に 222get
ズサ━━━━⊂(゚Д゚⊂⌒`つ≡≡≡━━━━!!

229 名前:デフォルトの名無しさん mailto:sage [2013/02/23(土) 00:40:36.58 ]
>>227
うおおお!
ありがとうございます!



230 名前:デフォルトの名無しさん mailto:sage [2013/02/23(土) 00:47:00.25 ]
>>228
localeおかしいぞ

231 名前:デフォルトの名無しさん mailto:sage [2013/02/23(土) 07:28:58.42 ]
>227
すげえええ
内部でrange関数使ってるからnothrowなのにnothrowじゃない日々ともおさらばだ!

232 名前:デフォルトの名無しさん mailto:sage [2013/02/23(土) 14:16:00.62 ]
隠していても俺がウスノロだってバレてしまうのかよッ

233 名前:デフォルトの名無しさん mailto:sage [2013/02/23(土) 19:12:31.79 ]
not ウスノロ
you're ウスベニウンコ

234 名前:片山博文MZパンク ◆0lBZNi.Q7evd [2013/02/24(日) 00:07:31.36 ]
COBOLからD言語への変換って面白そうだね

235 名前:デフォルトの名無しさん mailto:sage [2013/02/24(日) 00:13:17.53 ]
実用性ゼロの最悪の選択だ

236 名前:デフォルトの名無しさん mailto:sage [2013/02/24(日) 03:46:42.64 ]
rubyをDに変換して、さらにJavaで動くように変換したら凄いことになりそう

237 名前:デフォルトの名無しさん mailto:sage [2013/02/25(月) 15:51:16.98 ]
>>235
バカタ山に構うな

238 名前:デフォルトの名無しさん mailto:sage [2013/02/25(月) 16:46:43.58 ]
遠隔操作で片山が逮捕されたと聞いたとき、最初に思い浮かんだ片山は(ry

239 名前:デフォルトの名無しさん [2013/02/25(月) 17:58:44.93 ]
遠隔操作で片山が逮捕されたと聞いたとき、最初に思い浮かんだ片山は(ry



240 名前:デフォルトの名無しさん mailto:sage [2013/02/25(月) 18:44:21.72 ]
なぜDじゃなくてC#なんて比較的ショボい言語を使ったんだ

241 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 17:44:20.81 ]
Dを使った方はまだ極秘で捜査を進めている段階で情報を出すことが出来ない

242 名前:デフォルトの名無しさん mailto:sage [2013/02/28(木) 19:28:26.70 ]
でもC#のref/outとかプロパティとかはたまに欲しくなるんだ






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

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

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