D言語 Part25

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2010/12/23(木) 00:10:02
>>947
ズバリありがとうgj
953デフォルトの名無しさん:2010/12/23(木) 00:18:07
たまにis式が全能に見える
954デフォルトの名無しさん:2010/12/23(木) 01:01:55
>>953 なんでもやってのけるよな
955デフォルトの名無しさん:2010/12/24(金) 20:28:22
wxDってD2に対応してないのか...
→じゃあwxWidgetをC++から呼び出せばいいんじゃね?
そんで、それを独自にD2から呼び出せばいいんじゃね?
→あれ?これwxDとやってること同じじゃね?
→つーか、DのC++へのインターフェイスがしっかりしてればこんなに苦労しなくてもいいんじゃね?
→さっさと対応しろやゴルァ!!
956デフォルトの名無しさん:2010/12/24(金) 21:07:15
D2対応してたよ
昔は
957デフォルトの名無しさん:2010/12/25(土) 00:22:03
俺はD言語とクリスマスを過ごすわ
958デフォルトの名無しさん:2010/12/25(土) 01:28:51
あしたからほんきだす。
959デフォルトの名無しさん:2010/12/25(土) 20:04:55
そろそろ本気になるのか
960デフォルトの名無しさん:2010/12/25(土) 21:42:18
おれはほんきだぞ。いいのか。
961デフォルトの名無しさん:2010/12/25(土) 23:47:44
おまえらが本気になったら俺も本気になる
962デフォルトの名無しさん:2010/12/26(日) 05:35:35
行き止まり感どうにかならんの
963デフォルトの名無しさん:2010/12/26(日) 10:28:31
破壊的変更が無くなるのは良いことじゃないか
仕様が固まれば普及するよ
964デフォルトの名無しさん:2010/12/26(日) 10:31:35
たしかに仕様がいつまでも固まらないのは嫌だな
965デフォルトの名無しさん:2010/12/26(日) 11:57:52
D3期待sage
966デフォルトの名無しさん:2010/12/26(日) 15:47:29
D2の仕様が固まっても、D使いが食いつくのは破壊的変更の繰り返されるD3になるんだろうな
現状のD1とD2の関係みたいに
967デフォルトの名無しさん:2010/12/26(日) 16:13:24
つーか現状でも1.0使ってる奴がまだいる、みたいなことになるから
正直なとこ安定バージョンとか作らないで欲しいくらいだ。
968デフォルトの名無しさん:2010/12/26(日) 16:37:42
本当はD2使いたいけどライブラリが…
あまつさえtangoとか死んでも使いたくないけどライブラリが…
969デフォルトの名無しさん:2010/12/26(日) 16:40:28
version(DMD2xxx) {
  ...
}
version(DMD2xxy) {
  ...
}
970デフォルトの名無しさん:2010/12/26(日) 22:17:43
2.051のswitchってなんか変わった?
↓"A"が出力されるのを期待したんだけど"D"が出力されてる

auto hoge="aaa"w;
switch(hoge) {
case "aaa":
writeln("A");break;
case "bbb":
writeln("B");break;
case "ccc":
writeln("C");break;
default:
writeln("D");
}
971デフォルトの名無しさん:2010/12/26(日) 22:33:39
2.050までだとUTF8文字列とUTF16文字列の比較って一致するの?
972970:2010/12/26(日) 23:47:38
>>971
意識してなかったけど一致しなかったはず。
ただswitchって型推論で
switch(T) {
case T:
...
}
になると認識してたんだけど勘違いなのかな。

auto hoge="aaa"w;
switch(hoge) {
case "aaa"w:
writeln("A");break;
case "bbb"w:
writeln("B");break;
case "ccc"w:
writeln("C");break;
default:
writeln("D");
}
wつけても動かんのはわけわからん。
973デフォルトの名無しさん:2010/12/27(月) 00:57:45
trunkではちゃんと動いてるよ?

>dmd -run a
Max # of fixups = 29
1

>type a.d
import std.stdio;

void main()
{
auto s = "hoge"w;
switch (s)
{
case "hoge"w:
writeln("1");
break;
default:
writeln("0");
}
}
974デフォルトの名無しさん:2010/12/27(月) 22:39:25
975デフォルトの名無しさん:2010/12/28(火) 10:46:49
すみません、オーバーロードした関数をテンプレートへ明示的に渡す方法はどうやるのでしょう?
c++だとキャストでいけたんですが。。。

class Test {
int x;
int getX() {
return x;
}
int getX(int mx) {
return mx+x;
}
}

void func(F...)(){
// 関数名や引数を受けていろいろと
}

void main() {
func!(Test.getX)(); // ←Test.getX() でインスタンス化される
func!(cast(int function(int))&Test.getX); // ←コンパイルエラー
int function(int) f = &Test.getX;
func!(f)(); // ←理想はコレに近いが関数名"f"が渡されてしまう
}
976975:2010/12/28(火) 10:56:37
ついでに次スレ立てときました。

D言語 Part26
http://hibari.2ch.net/test/read.cgi/tech/1293500945/

更についでに>>972検証。
Linux DMD2.051 で"D"です。
977デフォルトの名無しさん:2010/12/28(火) 12:22:23
>>975
まず、functionじゃなくて、delegateじゃないだろうか?

次に、テンプレートのインスタンス化の時に、!()には変数の値は渡せないぜ?
(コンパイル時に決まる、整数型・浮動小数点型・文字列型は除く)

もし値渡しをやるなら、テンプレートの宣言は、
void func(F...)(F f) もしくは void func(alias F...)()
と、するべき。(後者は厳密には値渡しじゃないが)
今回は後者にすれば解決?
978977:2010/12/28(火) 12:24:01
あれ・・・ タプルとaliasは同時に宣言できないのかな・・・?
まあ、いいや。
979977:2010/12/28(火) 13:37:33
>>975
aliasは式に対しては使えない、という仕様に阻まれたが、何とか物が出来た。
http://ideone.com/TyNL4

こういう事がしたかった訳じゃ無いのかもしれんが、個人的には満足。
980デフォルトの名無しさん:2010/12/28(火) 14:32:10
>>977
遅くなってスミマセン。
細かいことを説明すると、Luaの関数登録を自動でやろうとしてます。
luabindに近いことをやりたいと。
他人様のブログですが、こんな感じです。
http://d.hatena.ne.jp/scior/20100824/1282660955

テンプレートの部分は本来は下記のようになってまして、func内では関数の自動生成をさせてます。

template regist(T, F...) {
string func() {
}
mixin(func);
void regist(T t ) {
}
}

Fには様々な関数を突っ込みますので、alias Fではコンパイルエラーになりました。
delegateを受ける形は上記のとおり関数生成の過程でNG。
delegateかfunctionかは別段不要なので、とりあえずでfunctionにしています。

ともあれc++と同じ指定ができない部分についてどうしたものかと。。。
981デフォルトの名無しさん:2010/12/28(火) 14:59:20
traitsにFieldTypeTupleのように型タプルを取り出すのではなくフィールドのシンボル一覧を取り出すようなものはありますか?
982デフォルトの名無しさん:2010/12/28(火) 15:41:07
これ?
__traits(allMembers, T)
983デフォルトの名無しさん:2010/12/28(火) 16:17:50
>>982
自分が定義したクラスのメンバ関数等を除くフィールドのみを取得したいのです。
allMembersだとメンバ関数やコンストラクタ等、余計なのが取れてしまって具合が悪いんですよね。
984977:2010/12/28(火) 17:06:29
>>980
まさかの難題。
ウォルたんに聞けば一発なんだろうけどなー。英語出来ないしなー。
もう少し調べる。
985977:2010/12/28(火) 17:25:36
>>980
って、結局テンプレートの使い方間違ってただけかいwww
http://ideone.com/Cdb5u
986977:2010/12/28(火) 17:40:07
オーバーロードした関数同士って、アドレス同じなんだねえ。
http://ideone.com/sU3ar
987デフォルトの名無しさん:2010/12/28(火) 17:50:52
dlua死んでると思ったらluadってのが活発になってる。
これだからDはやめられんぜ。
988977:2010/12/28(火) 17:57:14
>>980
http://ideone.com/lpyz7

え?こんなのいらない?
989980:2010/12/28(火) 18:09:45
すみません、大掃除で帰宅後確認しますです。助力感謝!
990デフォルトの名無しさん:2010/12/28(火) 18:15:18
>>986
なにこれこわい
991デフォルトの名無しさん:2010/12/28(火) 18:23:23
>>986
これは関数情報が入ってる構造体(thisと関数が入ってる)のアドレスじゃないかな
f.funcptrに関数そのもののアドレスがある
992デフォルトの名無しさん:2010/12/28(火) 18:37:01
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
993デフォルトの名無しさん:2010/12/28(火) 18:43:54
>>992
今更かよwww
994デフォルトの名無しさん:2010/12/28(火) 19:55:43
Dが人類の枠を超えてる事なんて周知の事実だと思ってた
995デフォルトの名無しさん:2010/12/28(火) 20:15:15
ピロートーク
996977:2010/12/28(火) 20:57:24
>>991
ホントだ。
http://ideone.com/5H4fI
997デフォルトの名無しさん:2010/12/29(水) 05:43:51
>>前スレ970
ttp://d.puremagic.com/issues/show_bug.cgi?id=5381
switchのバグはtrunkで修正された
998デフォルトの名無しさん:2010/12/29(水) 05:48:37
ごめんスレ間違えた
999デフォルトの名無しさん:2010/12/29(水) 09:28:57
1000デフォルトの名無しさん:2010/12/29(水) 09:30:10
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。