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
507デフォルトの名無しさん
垢版 |
2016/04/18(月) 15:40:47.97ID:NxXedIF3
バインディングに劣化とそうじゃないものの区別方法を教えれ
2016/04/18(月) 15:56:31.40ID:wndeF4nL
EUC-JPの文字列をUTF-8にエンコードするにはどうやればいいですか?
2016/04/18(月) 16:29:48.39ID:4lmkHLOP
>>508
iconvかicuのバインディングを探します
2016/04/18(月) 16:39:21.91ID:wndeF4nL
>>509
なるほど。
標準ではできないんですね。
2016/04/18(月) 23:04:02.22ID:8LbOm6LB
>>506 複素数はがんばってほしいよね。Dに。
>>510 EUC-JPは滅んだんだよ!もうそういう事にしようよ!
2016/04/19(火) 15:15:23.43ID:DoDYnfhi
EUC->(簡単)->JIS->(どのAPIがいい?)->UNICODE->(簡単)->UTF8
513デフォルトの名無しさん
垢版 |
2016/04/27(水) 10:07:10.53ID:h7nUlsO3
writeにクラスを渡した時クラス名だけじゃなくて中身も表示させたいんだが何に手を加えればいいんだろか?
2016/04/27(水) 10:09:28.75ID:Nq/5t8Sv
toStringオーバーライドすればいい
515デフォルトの名無しさん
垢版 |
2016/04/27(水) 10:27:53.40ID:KQtnTftA
>>514
即座に返事くれてすごい助かった
ありがとうございます
516デフォルトの名無しさん
垢版 |
2016/04/30(土) 12:14:38.56ID:XHbnmWX8
D言語でクラスを使って dmd -c Dソース でコンパイルだけして
GCC(mingw)でWindows用dllをクロスコンパイルする時、リンカが参照できないエラー吐くけども

参照できないメソッドはこれ
_D9invariant12_d_invariantFC6ObjectZv
_d_assert_msg

この参照できないメソッドが入ってるライブラリとその依存関係にあるライブラリって
どのファイルか分かります?
2016/04/30(土) 12:48:14.66ID:RhLYi0Bf
そうやって混ぜてコンパイルするのは無理…で普通は済む問題なんだけど
何がしたいのかしら
518デフォルトの名無しさん
垢版 |
2016/04/30(土) 14:53:50.70ID:XHbnmWX8
>>517
https://github.com/kubasz/uefi-d
これを参考に、UEFI AppをD言語で作りたいんだけども、
クラスを使うとリンクエラーでてしまい と言う話で、>>516
やっぱり、Dのクラスの仕組み上、こういう変な使い方するのは厳しいかな
2016/04/30(土) 16:19:04.96ID:FuZy8SxD
サンプルは再現出来てんの?
520デフォルトの名無しさん
垢版 |
2016/04/30(土) 17:06:09.96ID:XHbnmWX8
>>519
サンプル自体ビルドは通ってQEMUで動作確認済みです。

確認済みのサンプルソースに、追加で適当なクラス
(プリミティブ型(検証時はintのみ)のメンバ1つとコンストラクタ、セッタ、ゲッタのみ)とか
プリミティブ型(同上)メンバのみ構造体を定義すると
リンクしないといけない何かが足りなくなるらしいと言うところです
2016/04/30(土) 17:18:34.76ID:RhLYi0Bf
それなら
-debug -release のオプションの不一致かな
druntime の debugあり/なし バージョンが分かれてるのかな
522デフォルトの名無しさん
垢版 |
2016/05/01(日) 11:23:20.12ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
523デフォルトの名無しさん
垢版 |
2016/05/01(日) 12:30:45.52ID:5H9PV7Hp
年収いくら?
パナマに振り込み可能?
2016/05/01(日) 14:08:25.32ID:vpP9ivFq
新規性がない
525デフォルトの名無しさん
垢版 |
2016/05/02(月) 12:22:10.19ID:IEVsN46J
>>521
とりあえず、Objectのスタブを見つけたので、試しにコンパイルだけしてみました。
https://github.com/JinShil/D_Runtime_ARM_Cortex-M_study/wiki/1.3-Structs
これをそのままobject.dにコピペして、コンパイルだけ通そうとしたんですが
dmd -v -c object.d
binary dmd
version v2.070.2
config /etc/dmd.conf
parse object
importall object
semantic object
semantic2 object
semantic3 object
Error: undefined identifier 'Error'
Error: undefined identifier 'Error'

ってことなので、
class Error{
this(string){}
}

こんな感じのを作って、再度ビルドしたら、DMDが保護例外で落ちたんですが
D言語わからないですけど、多分CTFEが動いたんですかね?

Errorクラスの最小実装ってどうすればいいかわかります?
526デフォルトの名無しさん
垢版 |
2016/05/02(月) 15:11:51.74ID:aR8AOrvI
どつぼにそれてるパターン?
2016/05/02(月) 17:55:15.75ID:IEVsN46J
ごめんなさい、話が飛んでた。(ドツボにはまってました)
>>516は一旦解決しました。ありがとうです。

-releaseオプションつけたら、一先ずassert関連の
リンクエラーは出なくなりました。
2016/05/02(月) 18:01:06.10ID:aR8AOrvI
良かった
良かった
2016/05/04(水) 16:57:34.57ID:3BQvrgH5
DConf 2016 ustream
https://www.sociomantic.com/blog/2016/05/follow-dconf-2016-in-real-time/#.VymqqVWLQ7Y

Twitter
#dconf
530デフォルトの名無しさん
垢版 |
2016/05/04(水) 18:15:35.48ID:cRuVDbfJ
GJ
2016/05/05(木) 10:11:25.96ID:l/2+Jb+M
割とマジで
http://b.hatena.ne.jp/entry/togetter.com/li/970814
532デフォルトの名無しさん
垢版 |
2016/05/06(金) 20:12:27.55ID:7fiYERlP
Dって長方形配列を動的に確保するにはどうするのがベストなんでしょう?
2016/05/06(金) 22:45:34.04ID:W1xQbJku
>>532
>>498
534デフォルトの名無しさん
垢版 |
2016/05/07(土) 12:22:21.49ID:w1sNmh/I
>>533
おお、この記法でギザギザ配列回避できるのか!ありがとうございます
2016/05/08(日) 14:44:32.46ID:sTrGOFZo
多次元配列は最近こういうのもある
http://dlang.org/phobos/std_experimental_ndslice.html
536デフォルトの名無しさん
垢版 |
2016/05/12(木) 09:37:33.44ID:3GMYNf4t
>>535
これがまさに求めていたものだった
日本語のページではこれ全然見つからないし教えてくれなかったらこれに気付かず過ごすところだった
ありがとうございます!
2016/05/12(木) 14:42:51.13ID:yoZypm21
d言語の日本語情報は古くて、結構アテにならない
2016/05/12(木) 15:10:26.64ID:9ZRvi6Dg
それまだ入ってから半年も経ってないし
experimental な上に注目度高いからガンガン変わるよ
2016/05/13(金) 09:27:38.80ID:XXFnZH8x
DerelictAllegro用のdllファイルがAllegro公式漁ってもみつからねぇ
いっそ同封してくれりゃいいのに
2016/05/13(金) 10:05:11.23ID:+7L1Kkkt
公式配布のdllでダメなの?
541デフォルトの名無しさん
垢版 |
2016/05/14(土) 11:24:42.35ID:r8zKr16p
>>538
542デフォルトの名無しさん
垢版 |
2016/05/15(日) 12:10:35.85ID:5BLNb8Jh
dってpythonでやれるように関数の引数としてクラスをとることは出来ますか?
2016/05/15(日) 13:23:09.57ID:0JYIjYbN
型と値は別物なので、Pythonのtypeクラスみたいなものは無いはず
テンプレートでは型を引数に取れるからそれで大概足りるしな
2016/05/15(日) 13:26:52.30ID:/LAeaQVK
そのままのものはなくても
__traits/std.traits を隅々まで見るとだいたいのことは出来る
545デフォルトの名無しさん
垢版 |
2016/05/15(日) 16:23:19.03ID:5BLNb8Jh
なるほどdでは型を引数にしたかったらテンプレートを使うんですね
わかりましたありがとうございます
546デフォルトの名無しさん
垢版 |
2016/05/16(月) 18:01:26.97ID:SzBm3KOG
すいません、>>535のndsliceを包含したクラスでnumpyのように動的にshapeを変えられるクラスを作ることは可能でしょうか?
slicedの引数が動的配列ではいけないせいでスライスの形をメンバ変数として持てず、Sliceの次元がコンパイル時に決定されていないといけないせいでslicedの結果をメンバ変数として持てなくて困っております。
2016/05/16(月) 20:47:31.03ID:1yYFRP5Q
>>546 同じインスタンスに対してshapeをかえるのはむりっぽいとおもわれ
決め打ちできる所までtemplate化していくしかないきがす
https://dpaste.dzfl.pl/32747b208179
548デフォルトの名無しさん
垢版 |
2016/05/17(火) 08:13:05.26ID:8mvnsosn
>>547
やっぱり無理でしたか……
コードの例まで載せてくれてありがとうございます。参考になりました
2016/05/18(水) 07:28:31.57ID:tzs1T2aJ
テキストファイルをstringに読み込んでstd.string.indexOfを使うと
Invalid UTF sequence: e5x a3x - Attempted to decode past the end of string (at index 2)
という実行エラーが出ます。
テキストファイル自体は、TeraPadで開くとUTF-8として自動認識されているのですが、
D言語の標準ライブラリが認識してくれない原因は何が考えられますか?
2016/05/18(水) 13:02:57.20ID:yAlr13Jm
エラーメッセージそのまま
文字列が中途半端なところで終わってる
読み込むサイズが足りないか、元々ファイルがおかしくてTeraPadが開く時に自動で直してくれてるのか
2016/05/18(水) 13:51:37.18ID:tzs1T2aJ
>>550
thx
コードの中に、文字列が中途半端に終わってる部分がありました。
552デフォルトの名無しさん
垢版 |
2016/05/22(日) 07:52:01.31ID:vou34ySW
D言語の複素数ってなんか組み込みのとライブラリのがあってしかも行き来が不自由なんだけどどうなってんだこれ
2016/05/22(日) 08:03:25.90ID:KneT9rID
ライブラリの方を使う
組み込みのやつは互換性のために残してあるだけ

https://dlang.org/deprecate.html
554デフォルトの名無しさん
垢版 |
2016/05/22(日) 08:10:54.35ID:AqdMtFt7
組み込みで使えるの便利だったのに……
2016/05/22(日) 09:20:35.38ID:KneT9rID
「ライブラリで実現できる」「言語仕様を小さくする」とかで
機能追加が却下されたり言語の機能が削られたりしてるが
「できる」じゃなくて本当にライブラリ側でやった方が良いのかどうか検討してからにして欲しい

言語仕様の大きさなんてユーザには関係ないよ、必要な部分しか使わないんだから
2016/05/22(日) 10:51:13.93ID:cWYsuk0t
言語仕様が小さくなってフットワークが軽くなる(== 破壊的変更が増える)
ならそれはユーザ体験の向上であろう。
さあはやく俺のstd.math.expi多用したコードをはじくのだ!
557デフォルトの名無しさん
垢版 |
2016/05/22(日) 11:23:25.91ID:7hG4VCWt
>>555
つまりどういうことです?
558デフォルトの名無しさん
垢版 |
2016/05/22(日) 14:41:12.39ID:P1iBYgIC
ライブラリでやるより言語仕様充実して欲しい
2016/05/22(日) 15:55:15.13ID:/FrpjXvP
初期の頃は、ライブラリより構文側でやった方が最適化できるというスタンスだったのに
いつの間に方針転換したんだろな
2016/05/22(日) 19:14:04.72ID:6Zib/w67
少なくとも>>553読む限りでは、需要がないと判断されただけに見えるけど
http://dlang.org/builtin.html でも最初に挙げられてる理由は「よく使われる」だし

8年間futureのままだったが、今月ようやく警告を出すPRが出たんだな
2016/05/24(火) 11:51:00.77ID:ng4V60az
>>559
CTFE が充実したとかLDCにぬかれたとかありそう
それに PreciseGC が未だにないのにビルトイン型だけ充実してますと言われても困る
562デフォルトの名無しさん
垢版 |
2016/05/24(火) 23:39:58.92ID:mrDJwu+1
Pythonでいうところの
np.array([[[i,j] for i in range(3)] for j in range(5)])

np.array([[i,j] for i in range(3) for j in range(5)])
はDではrangeやndsliceを使って一行くらいで表現できますか?
2016/05/25(水) 02:32:41.24ID:ywcZQvWe
>>562
import std.algorithm, std.range;
3.iota.map!(a=>5.iota.map!(b=>[a,b])).join
ndslice使ってないけどこんなんですか
564デフォルトの名無しさん
垢版 |
2016/05/25(水) 13:31:47.54ID:7HlacyyV
>>563
おお、綺麗だ……
まさかpythonより短く書けるとはびっくりしました。
ありがとうございます
565デフォルトの名無しさん
垢版 |
2016/05/25(水) 14:49:41.33ID:JMqhkYJX
Dとpythonは相性良い感じ
566デフォルトの名無しさん
垢版 |
2016/05/27(金) 18:54:45.88ID:a5zDK+Zd
dmcの質問なんですけど
a->b(a);
みたいなオブジェクトaに対するインスタンスメソッドbの呼び出しを
#define M(x, y) x->y(x)
みたいに定義して
M(a, b);
と書きたいのですが
エラーになります
どうマクロを書くのが正しいのですか
2016/05/27(金) 23:33:42.41ID:XThKS0xC
>>566 俺の環境ではその書き方のままで動くけど?
そもそもそのマクロの意図がわからんが。
http://codepaste.net/j8ub3f
568デフォルトの名無しさん
垢版 |
2016/05/27(金) 23:53:06.16ID:0lBzfo5D
>>567
ここD言語のスレやで
2016/05/28(土) 11:08:25.75ID:YkPoIoOS
現象がdmc限定っぽかったのでここで質問しました
実際のコードはメソッドにいくつかパラメータ(可変長)があって
a->b(a);
のケース以外に
a->b(a, c, d, e);
でも呼ぶケースがあるので
#define M(x, y, ...) x->y(x, ## __VA_ARGS__)
みたいに定義して
M(a, b);
するとエラーになります
条件後出しで済みませんでした
2016/05/28(土) 12:41:24.79ID:2veKovfq
>>569 その書き方はgccのコンパイラ拡張じゃまいか
https://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html
ちなcl https://msdn.microsoft.com/en-us/library/ms177415.aspx
>>568 ごめ。
2016/05/28(土) 12:45:14.86ID:YkPoIoOS
「##」 を無くしてもエラーになるんです

#define M(x, y, ...) x->y(x, __VA_ARGS__)
M(a, b);
2016/05/28(土) 15:20:08.53ID:2veKovfq
可変個引数が0個の場合、C99的にはコンマが余っちゃうからそれぞれ独自拡張しますってリンク先に書いてあります。
dmcはもうあんまり使わないほうがいいかも
http://en.cppreference.com/w/cpp/compiler_support
時代はDだよね!?(スレチ回避)
2016/05/28(土) 15:31:12.42ID:YkPoIoOS
ありがとうございます!!
Dで書き直すことにします!!!
574デフォルトの名無しさん
垢版 |
2016/05/28(土) 22:37:06.78ID:/97ybqru
mixin templateでopIndex(size_t I)を定義した後mixinなしでopIndex(size_t i, size_t j)を定義するとopIndex(size_t I)が無効になりますが、これは何が起こっているのでしょうか?
2016/05/29(日) 02:18:09.41ID:KH4GuwqF
>>574
http://dlang.org/spec/template-mixin.html#mixin_scope
If the name of a declaration in a mixin is the same as a declaration in the surrounding scope, the surrounding declaration overrides the mixin one:
っていう仕様
576デフォルトの名無しさん
垢版 |
2016/05/29(日) 09:19:07.17ID:xui0wAEZ
>>575
これって引数の型や数が違っててもオーバーライドするんですか……
2016/05/29(日) 18:01:34.33ID:TAOnosGl
575のリンク先の下のほうにあるけど、aliasでオーバーロードに含めることができます。
2016/05/29(日) 19:40:16.20ID:Ai+IvVh7
オーバーロード集合はちゃんと使えないとハマることがあるのに
説明が不十分だと思う
579デフォルトの名無しさん
垢版 |
2016/05/31(火) 22:06:56.78ID:RGgOwYh0
FreeStandingな環境向けのD2向けRTTIの実装って有ったりするです?
580デフォルトの名無しさん
垢版 |
2016/06/02(木) 12:17:10.24ID:kBgl6uD2
5月31日 5時10分

http://www3.nhk.or.jp/news/html/20160531/K10010540551_1605310509_1605310510_01_03.jpg

31日、火星が地球に最接近します。「スーパーマーズ」とも言われ、今回は最近10年間で最も近い距離となり、都市部でも肉眼で見ることができることから、身近な天体ショーとして気軽に楽しめそうです。

太陽系で地球の1つ外側の軌道を回る火星は、太陽の周りを687日かけて1周しながら、およそ2年2か月に1回、地球に接近しています。ただ、地球の軌道がほぼ円形なのに対して、火星の軌道がだ円になっていることから、火星と地球との距離は接近するたびに変わります。

国立天文台によりますと、火星は31日に地球に最接近し、今回はおよそ7500万キロまで近づいて、この10年間では最も近い距離になります。
火星の明るさは1等星のおよそ15倍の「マイナス2等星」くらいになるとみられ、地球から見える火星の見かけの大きさも、ことしの最も小さいときと比べて直径がおよそ3倍になります。

(続きや関連情報はリンク先でご覧ください)
引用元:NHKニュース http://www3.nhk.or.jp/news/html/20160531/k10010540551000.html


※関連板 http://wc2014.2ch.net/galileo/ 宇宙
2016/06/02(木) 12:25:16.50ID:kBgl6uD2
既出かもだけど、俺コレには震えた

http://qiita.com/mattn/items/b7889e3c036b408ae8bd
582デフォルトの名無しさん
垢版 |
2016/06/02(木) 18:38:00.61ID:e6XwNe8R
配列が提供するインターフェイスを揃えたクラスを簡単に作るには何のインターフェイスを継承して何にalias thisすればいいのでしょうか?
2016/06/03(金) 22:56:31.52ID:7NE5KVgC
>>579 castじゃだめなん?
>>582 こうですか? https://dpaste.dzfl.pl/4f46d257323c
>>580-581 dmd と間違って smd と入れるとスーパーマーズD言語ちゃんが接近してくるジョークソフトを作ってくれるんですね↓
2016/06/04(土) 18:51:35.81ID:DlnDvjYz
了解
585デフォルトの名無しさん
垢版 |
2016/06/04(土) 22:54:34.68ID:tpsKxr6y
>>583
rangeのいずれかのインターフェイスを継承させてやりたいです……

複数種類のクラス(全て配列のインターフェイスを持っている)を引数として取れる関数を定義したいんです

voidポインタなんて久々に見ました
586デフォルトの名無しさん
垢版 |
2016/06/04(土) 22:57:19.79ID:/ZaYqJqz
std.mathとstd.complexをimportしたらexpiが競合した……
まさか毎回どっちのを使うか指定しないといけないのか?
2016/06/05(日) 01:15:03.75ID:wuPWHoc6
選択importするとか
588デフォルトの名無しさん
垢版 |
2016/06/05(日) 11:27:16.05ID:NUUYuMig
インターフェイスAとBがあって、関数fはインターフェイスAとBの両方を継承したクラスを引数に取る
こんな関数fの引数の記述方法はありますか?
2016/06/06(月) 01:34:29.33ID:mLcW0ja8
>>585 range はダックタイプで、https://dpaste.dzfl.pl/6d9bc674089e
>>588 こんな感じではないだろうか https://dpaste.dzfl.pl/b3f7f2d0ebae

やっつけSMDつくったよー
https://github.com/garlic-flavor/smd
590デフォルトの名無しさん
垢版 |
2016/06/06(月) 18:47:18.37ID:Ed/7rB97
>>589
なるほどtemplate+ifでやればいいのですか
こんなに汎用性のあるものとは知りませんでした
ありがとうございます!



D使いもWindowsユーザーの方がやっぱり多いんだろか……
591デフォルトの名無しさん
垢版 |
2016/06/07(火) 11:54:47.42ID:Fo09osKo
dmcの質問なんですけど、
wchar_t *hoge = L"あ";
としてファイルを UTF-8 で保存&コンパイルして実行したとき、
hoge の中の値は \u3042 を期待していたのですが、
なぜか \xe3\x81\x82 になるみたいなのですが、
なぜでしょうか?
2016/06/07(火) 13:35:54.18ID:dYQbvyOv
入力がUTF-8と思われてないんじゃね
Windowsなら普通はSJISかLatin-1かが仮定されてるはずだから、オプションを付ける必要があると思う
dmcのことは知らん
2016/06/07(火) 14:58:01.24ID:wTM17UsZ
core.simdのfloat4って、要素を移動させるのにシフト演算って使えないでしょうか?
例えば[1.0, 2.0, 3.0, 4.0]のベクトルを[2.0, 3.0, 4.0, 4.0]にしたいです。
594デフォルトの名無しさん
垢版 |
2016/06/08(水) 07:59:41.76ID:51dlGdh/
iotaからの一連の流れで好きな配列つくれるのホント便利だわ
2016/06/08(水) 16:27:08.87ID:c99ZJOB9
>>593
何bit分を何bitシフトさせたの?
2016/06/09(木) 18:13:41.96ID:nQlOEPkQ
LDC 1.0.0 リリースおめ
2016/06/09(木) 20:51:27.58ID:jEie4NkL
>>595
もしかしてそのままシフト演算子が使えたりします?
http://www.kmonos.net/alang/d/simd.html
ここに書いてないので、単純にそのままできるとは思いませんでした。

で、試そうと思ったらError: undefined identifier 'float4'というエラーが。
core.simdはimportしてるんですけど、なぜでしょう?
2016/06/09(木) 21:09:40.20ID:4WAQK3bH
>>583
castは型のキャストって意味?

もしそうなら意図が伝わってなくて申し訳ない。
Freestandingな環境だとlibc.soはもちろん存在しないし
動的リンクなんて仕組みもないので
既存のdruntimeは使えないって思い込んでるんだけど
(合ってる?もしかして、この辺りで勘違いしてる?)

最低限、そういう環境で構造体は使えるようにObject.TypeInfo_Structクラスが
実装されてるもの無いのかな・・・と。
dmd ver2.071.0でObjectクラスを自作するとErrorクラスの実装でコケるので
既存で最小限(RTTIのみ?)の機能を持つライブラリがあればそれを使いたいなと言うことで。
599デフォルトの名無しさん
垢版 |
2016/06/11(土) 08:53:33.73ID:CU/y+sw+
std.rangeに入ってるRandomAccessFinitを継承してクラスを作ったら、メンバの配列にalias thisしてもなお実装すべきものがいっぱい残ってるんですが、
これは全て自分で一つ一つ書いていくのですか?

もしくは配列と同じ操作を提供するインターフェイスを作るにはどうすれば楽でしょうか?
2016/06/11(土) 09:15:16.03ID:sZRxwhEp
あそこの一連のインターフェイスは「こんなん作ってみたんだけど〜」程度のもので
ほとんど使われてない

構造体テンプレートにしてコンパイルエラーが出ない程度に既定プロパティを補うのが主流
そのやり方なら alias this の転送でほとんど足りるはず
ただしどのプロパティを再定義すべきかはインターフェイスを見るのがいい
601デフォルトの名無しさん
垢版 |
2016/06/11(土) 09:41:32.26ID:j5Azp1YN
>>600
ええっとすみません。間違っていたら申し訳ないのですが、もしかしてinterfaceとclassを使うよりstructを使うのが主流なのですか?
2016/06/11(土) 10:36:32.51ID:sZRxwhEp
D言語のファンはオーバーヘッドとかGCとか嫌う声が大きい
実際のところ GC の実装がチープでそれほどあてにならないし

構造体とメタプログラミング乱舞で読みにくいライブラリが人気

でもインターフェイスでやりたければやればいいのよ
>>599 の 大半のメソッドは1行関数で済むはず
双方向とか明らかにいらなそうなのを省くなら std.typecons.WhiteHole が使えるかも
603デフォルトの名無しさん
垢版 |
2016/06/11(土) 11:30:53.78ID:awsUhPf2
>>602
Whiteholeは知らなかったし参考になります。
人気のライブラリとかってどこを見ればわかるんでしょうか?
2016/06/12(日) 21:29:10.60ID:HMmiIFiS
>>598 わかんないや。ごめんね。
>>603 人気ぶりはわからないけど、ここのを https://code.dlang.org/
これ https://code.dlang.org/packages/dub 使ってダウソして欲しいと、ヲルたんは思っているのではないだろうか。
605デフォルトの名無しさん
垢版 |
2016/06/13(月) 05:06:45.55ID:PElmNHhw
>>604
あ、すみません。人気のライブラリって標準ライブラリ中でも人気な奴という意味からと思ってました。
そういうことでしたか。ありがとうございます。

ところで、ひとつ聞きたいのですが、dではpureやimmutableが使えますが、これらを使うと実際どの程度最適化されるのでしょうか?
606デフォルトの名無しさん
垢版 |
2016/06/13(月) 15:35:28.75ID:iihvfQlB
InterfaceにopBinaryなどのテンプレート関数を持たせるにはどうするのですか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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