D言語 Part25
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/08/15(日) 07:59:24■前スレ
http://pc12.2ch.net/test/read.cgi/tech/1264432017/
■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)
■コンパイラ
http://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
http://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
http://www.dsource.org/projects/ldc (LDC, バックエンドにLLVM)
■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF)
ttp://dsource.org/ (dsource)
ttp://tinyurl.com/candcpp2d2 (C/C++に疲れた人のD言語2.0)
ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語)
ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか)
ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座)
ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画)
ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games)
ttp://dusers.dip.jp (D言語友の会)
ttp://www.wish.sakura.ne.jp/desuno/game/Drawing (PrincessDrawing! D言語で作られた横スクロールSTG)
0002デフォルトの名無しさん
2010/08/15(日) 08:01:30ttp://forums.codeblocks.org/index.php?board=20.0 (Code::Blocks)
ttp://www.dprogramming.com/entice.php (Entice Designer)
ttp://www.dsource.org/projects/descent (Descent)
ttp://www.dsource.org/projects/poseidon (Poseidon)
ttp://alexanderbothe.com/?id=27 (D-IDE)
ttp://codepoet.sourceforge.net (CodePoet ※計画中)
■過去スレ、関連スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=D%8C%BE%8C%EA&sf=2&all=on&view=table&shw=5000
■その他関連スレ
統合開発環境Eclipseプラグイン開発QA
http://pc11.2ch.net/test/read.cgi/tech/1081517094/
"Code of the Nerds" Digital Mars C/C++
http://pc11.2ch.net/test/read.cgi/tech/1044210976/
0003デフォルトの名無しさん
2010/08/15(日) 08:03:41立ててみました
0004デフォルトの名無しさん
2010/08/15(日) 08:13:410005デフォルトの名無しさん
2010/08/15(日) 14:16:55まだ生きてたかー、あれから状況は良くなったんかな?
0006デフォルトの名無しさん
2010/08/15(日) 14:43:08今年の5月にD2の安定版が出る予定。今4月137日だからあと少しだな。
0007デフォルトの名無しさん
2010/08/16(月) 18:25:53#d_lang Got Phobos' object.d to compile in 64 bit mode. On to the rest of Phobos.
0008デフォルトの名無しさん
2010/08/16(月) 22:52:54GCまわりとか
0009デフォルトの名無しさん
2010/08/17(火) 01:34:35>>8
「メッセージをポストするだけ」とかなら他のでもかまわないだろうが、
そうでないなら標準ライブラリのcore.threadを使うのが無難なんじゃないだろうか。
0010デフォルトの名無しさん
2010/08/17(火) 22:55:58あと一息ってことでしょうか
もうすぐ私もD言語を使えるってことでしょうか
0011デフォルトの名無しさん
2010/08/17(火) 22:58:280012デフォルトの名無しさん
2010/08/18(水) 01:44:280013デフォルトの名無しさん
2010/08/18(水) 02:15:12x64Vistaだがコンパイラもコンパイルしたソフトも(WoW64上で)普通に走ってる。
64bitモードのバイナリ吐けるのがそろそろ出るとか出ないとか。
てか、DMCって64bit対応してないんじゃ?その辺どうなるんだろう
0014デフォルトの名無しさん
2010/08/19(木) 00:20:06extern(System)とすると勝手に@NNが付くし、extern(C)だと名前は合うから呼び出せるけどスタックが崩れてすぐ落ちちゃうんですけど
0015デフォルトの名無しさん
2010/08/19(木) 01:03:23インラインアセンブラか、いっそエクスポートしてGetProcAddressか、だろうなあ……
0016デフォルトの名無しさん
2010/08/19(木) 01:05:58.dllを作るなら.defファイル書けばいけるだろうけど、静的ライブラリは無理だろうなあ……
っていうかどういう用途だ?
既存のライブラリと合わせるためなら、ライブラリの方をdmcでコンパイルしなおして
@付きを要求するようにしちゃえ
0017デフォルトの名無しさん
2010/08/19(木) 01:46:45そういう関数を持ったDLLがあって、それのD用のインポートファイルを書こうとしてるんです
そしたらやっぱりアセンブラとかそういう選択肢が出てきちゃうんですね・・・
仕方ないのでちろっと調べた感じで、
size_t TotalSizeof(TS...)() {
size_t n=0;
foreach (T; TS)
n += T.sizeof;
return n;
}
R CallingConventionFix(alias F,
R=ReturnType!(F),
P=ParameterTypeTuple!(F))
(P p) {
size_t paramsize = TotalSizeof!(P)();
static if (is(R == void)) {
F(p);
asm { sub ESP, paramsize; };
}
else {
R r = F(p);
asm { sub ESP, paramsize; };
return r;
}
}
alias CallingConventionFix!(ForeignFuncHoge) ForeignFuncHoge_; // 変換
:
:
こんな感じでとりあえずは思ったように動いてる感じです。
なんかどっか間違ってそうでこわいけど
0018デフォルトの名無しさん
2010/08/19(木) 02:13:06一応、n += T.sizeof; の部分は、4単位に切り上げたほうがいいとは思うけど
それ以前に最適化次第でどうにでも変になってしまいそうだ……。
というか.dllの関数を呼ぶだけなら、それこそGetProcAddressでいいんじゃない?
0019デフォルトの名無しさん
2010/08/19(木) 02:33:53pragma(lib, "d3d9");
みたいにして。
あるいは動的リンク(GetProcAddress)だろうね。
002017
2010/08/19(木) 02:36:20よく考えたら確かにそうですね
なんかテクニカルそうなことやってみたい盛りだったんでしょうかね……
普通にそっちでやりますね、スレ汚してすみませんでした
0021デフォルトの名無しさん
2010/08/19(木) 02:47:17.dllの供給元から提供されてる.libを使ったら@が付いてなかった、という話だと思われる。
自分で.def書いて.lib作り直せばいけるだろうけど、.dllの更新が頻繁だとめんどくさいしなー。
0022デフォルトの名無しさん
2010/08/20(金) 01:18:00Linux上で動くCUIサーバアプリケーションの開発を予定しています。
スレッド、ソケット、その他多少IO系が使えれば、残りはほぼ実装であることや、
自社に特にc++のリソースが無くゼロベースからの開発であることから、
D言語の方がリファレンスや参考サイトを見る限り、
開発が素早く完了しそうな感触を得たため、D言語の開発環境を構築しています。
ところがどっこいLinux上に環境を作るのにかなり手こずっている状況です。
ひとまず要件としてこんな感じです。
・開発コストを抑えること。
・Eclipse等のIDEの利用(CUIでデバッグは考えたくないです)
・ネイティブコードが吐けること。
・gc以外のメモリ管理も可能なこと。
・DBとコルーチンがあれば尚可。
続きます
002322
2010/08/20(金) 01:19:57・クロスプラットフォーム対応で時間を掛けたくないので、
(VMの)CentOS5.5上に開発環境を構築しようとしています。
本番のサーバもCentOSを予定しています。
・dmd2.048をインストール
→コマンドラインからdmdのコンパイル、実行を確認。
・Eclipse3.6にDescentをインストール。パスを通せばエディタとしては問題なし。
・Eclipse上からコンパイル可能にするため、dsssをインストール。
→dsssコマンド自体は動くが、tango等いくつかnet installしようとしても
コンパイルエラーに遭遇。1.xを入れてないからか?
・Eclipseからコンパイルを試すも、エラー(java.io.IOException: error=13, 許可がありません)で成功せず。
・dsssのライブラリが最新のものとかなり違うようだったので、最新のdmdをメインにしようと思い、gdcの導入を検討。
→ソースを若干書き換えbuildは作れたものの、実行できず。
・もうAntで作っちまおうか('A`) な状態に。
という状況でして、うまいことコンパイル&デバッグが可能な状況に
なかなかたどりつけないでいます。
Linux上でDの開発を順調に行えている方は、
どのような環境で開発しているのでしょうか?
また、私の勘違いで損をしているだろう部分や、
アドバイス(c++でやれ)等ありましたらお願いします。
申し訳ないですが職場のdionがアク禁なので、返事は早くても明日になると思います。
0024デフォルトの名無しさん
2010/08/20(金) 02:20:540025デフォルトの名無しさん
2010/08/20(金) 02:29:17LinuxでIDEを使ってD言語やってる人はほとんどいないんじゃなかろうか.
何にせよIDEはおもちゃみたいなのしか聞かないね.
2.xのPhobosが特に不安定な時期だからここの変更をカバーできるように書いた方がいいと思う.
dsssは実質使われていない.
Tangoは最近もライセンスでいざこざがあるなどPhobosと同調しないからおすすめしない.
0026デフォルトの名無しさん
2010/08/20(金) 03:35:01一応あるにはあるけど、CentOSで仕えるのってあったっけ。
GC以外のメモリ管理もおすすめできない。
どうしてもやりたいのであれば、mallocなどは使うことができるけど、慎重に使わないとGCに刺される。
DBはPhobosには無い。JsonもXmlも一応存在するが、あまり良いものではない。
コルーチンであれば、core.thraed.Fiberが利用可能。
ビルドツールは、専用のものを自分で適当に書いてしまうか(200行程度でそれなりに仕上がる)、make、Antを使ったほうがいい。
デバッグツールは、Descentからつかえるものの、Descent自体相当重いのでアテにしてはダメ。昔ながらのprintf(Dではwriteln)が一番強力に思う
0027デフォルトの名無しさん
2010/08/20(金) 14:41:07多分次のdmdのバージョンアップでそのサーバは動かなくなるw
0028デフォルトの名無しさん
2010/08/20(金) 17:03:57いつのdmdの話をしてるんだ…
002922
2010/08/21(土) 00:06:41>>24-25
外部ライブラリの件、非常に参考になります。
同じ最新環境でガシガシ書いているのではないのですね。
>>26
IDEは…そこを何とか('A`)
エディタ+αとして使えれば十分なので、実行/デバッグを除けばDescentで事足り
てます。
実行/デバッグはアドバイス通りAntを書いてみたいと思います。
メモリ管理の件は、Javaのようにいつ回収されるかわからないような状況でなければ
問題ないというような意味でして、私の書き方が悪かったと思います。
D言語仕様で問題ないです。
その他、諸々とても参考になりました。
>>27
C++開発の総コスト < D2.x開発+D3.x対応・・・と信じたい。
0030デフォルトの名無しさん
2010/08/21(土) 03:41:04d2の最新版でスタックとレース表示も入ったらしいし、
実はデバッガが言語組み込みだと考えていいのではないかと思う
0031デフォルトの名無しさん
2010/08/21(土) 03:49:400032デフォルトの名無しさん
2010/08/21(土) 12:53:37PerformanceCounter pc = new PerformanceCounter();
とか書くだけでめまいがする
Dなら
auto pc = new PerformanceCounter;
と書けてライブラリも略名が多いからサポート無しで書くのが存外苦痛じゃなかったりする
結論から言うとC++0xでおk
0033デフォルトの名無しさん
2010/08/21(土) 12:57:40でもlinuxなら本体にスタックトレース入ったらしいからいらないかな
でもstd.socketが近いうちに差し替えられるかもしれない
0034デフォルトの名無しさん
2010/08/21(土) 18:09:22特にライブラリは、古いのを残して新しいのを追加する形で、なるべく新しいのを使う形になると思う。
D3になったら…覚悟したほうがいい。少なくともscope, typedefあたりは今のうちから排除していったほうがよさそう。
0035デフォルトの名無しさん
2010/08/21(土) 19:32:020036デフォルトの名無しさん
2010/08/21(土) 19:46:42Andrei曰く、
class A {
void method(B b){ b.link(a); }
}
...
auto b = new B;
{
scope a = new A;
a.method(b);
}
b.useA();
こういう時、コンパイルエラーなしに実行できて、未定義動作起こすのが嫌らしい。
0037デフォルトの名無しさん
2010/08/22(日) 23:51:470038デフォルトの名無しさん
2010/08/23(月) 19:36:200039デフォルトの名無しさん
2010/08/23(月) 20:21:15004022
2010/08/24(火) 20:08:52ようやっとLinux+Eclipseからコンパイルが成功しました。
結局dmdを使用するmakefileを作成してEclipseのビルダーを置き換えし、
Ctrl+Bにてコンパイルできるようになりました。
単語補完も昔のPHPEclipse並の微妙感が良い感じです。
アドバイスいただいた方々、ありがとうございました。
あとはデバッガさえ動けば・・!
0041デフォルトの名無しさん
2010/08/24(火) 21:51:37linuxでD使ってないからよくわからんけど-gcオプションつけてgdbがいいのかな?
頑張ればEclipseから使えそうな気がしないでもない
004222
2010/08/25(水) 02:04:07試しにDdgbをEclipseから選択してみたらWindowsでやれ的なエラーがw
ということでgdbしか選択肢が無さそうです。
とはいえDescentのメニューからgdbを選択できたので、
特に問題なくデバッグできました。
まだDの設計が理解できてないので、
レジスタ等の動きが正しいのかわかりませんが、
ステップ実行やメンバ変数のトレースは問題なく動きました。
これで勝つる!!
0043デフォルトの名無しさん
2010/08/25(水) 07:28:35void main() {
int[int] a = (int[int]).init;
a[1] = 2;
}
$ dmd -run test.d
object.Error: Integer Divide by Zero
やだ…なにこれ…
0044デフォルトの名無しさん
2010/08/25(水) 20:17:16int[int] a;
assert(a == a.init);
}
Error: incompatible types for ((a) == (AssociativeArray(null))): 'int
[int]' and 'AssociativeArray!(int,int)'
やだ…なにこれ…
0045デフォルトの名無しさん
2010/08/25(水) 21:15:29DのDたるところは健在だな
0046デフォルトの名無しさん
2010/08/25(水) 21:27:03回避方法がすぐに見つからないバグも少ないし、何とかなる場合がほとんど。
0047デフォルトの名無しさん
2010/08/25(水) 23:38:08他言語からの移植品に比べて格段にコードが短くなる
後もう少し機能が揃えば…
0048デフォルトの名無しさん
2010/08/27(金) 01:31:420049デフォルトの名無しさん
2010/08/27(金) 02:38:01何が足りない?
0050デフォルトの名無しさん
2010/08/27(金) 07:17:10core.thread
0051デフォルトの名無しさん
2010/08/27(金) 07:17:55SpinnerだかSpinBoxだかNumericUpDownだかとレイアウトマネジャ
あとGraphics関連が弱い
どうせラップするだけだから自作してみようかと思ったら
SpinnerってWindowsAPIにないんだよな
なんだというんだ
>>48
src/druntime/import/core
にthread.diがあるよ
0052デフォルトの名無しさん
2010/08/27(金) 17:48:25UpDown(UPDOWN_CLASS=msctls_updown32)?
この手の名前はいろいろありすぎて困る
0053デフォルトの名無しさん
2010/08/27(金) 19:35:36ぐぐったら猫が出てきた。これこれ
ttp://homepage2.nifty.com/c_lang/sdk3/sdk_205.htm
AndroidではいわゆるコンボボックスがSpinnerという名前になってたりする
どういうことなの…
0054デフォルトの名無しさん
2010/08/28(土) 00:24:07D3まだー?Range落ち着くまで来ないんかな
0055デフォルトの名無しさん
2010/08/28(土) 01:53:360056デフォルトの名無しさん
2010/08/28(土) 05:38:480057デフォルトの名無しさん
2010/08/28(土) 06:02:19http://gihyo.jp/admin/clip/01/linux_dt/201008/25
0058デフォルトの名無しさん
2010/08/28(土) 06:34:31そういうもの?
0059デフォルトの名無しさん
2010/08/28(土) 08:02:36DLL Hell に巻き込まれるよりはましかもしれない。
DLL にしても、最近は結局自分のディレクトリに入れておけという感じだしな。
0060デフォルトの名無しさん
2010/08/28(土) 08:12:45ここのWikiだよね?
0061デフォルトの名無しさん
2010/08/28(土) 08:21:01正気かfedora
0062デフォルトの名無しさん
2010/08/28(土) 09:27:110063デフォルトの名無しさん
2010/08/28(土) 09:29:180064デフォルトの名無しさん
2010/08/28(土) 15:06:46見つけられなくなる気がする。どういうことなんだ・・・
C:\D\dmd2\src\libs>cat a.d
void main()
{}
C:\D\dmd2\src\libs>dmd a.d winmm.lib
C:\D\dmd2\src\libs>dmd -lib a.d winmm.lib
Error: Error reading file 'winmm.lib'
0065410◇hmqb6VZ0L
2010/08/28(土) 18:04:20http://f17.aaa.livedoor.jp/~labamba/?Wiki%B0%DC%BF%A2%A4%B7%A4%BF%A4%A4
0066デフォルトの名無しさん
2010/08/28(土) 18:52:21マジかよすげぇなまるでパッケージソフトみたいだ
0067デフォルトの名無しさん
2010/08/29(日) 02:46:33わざわざ新しいの作らんでも、dusersに移すのじゃあかんの?
PhobosとTangoの分裂みたいに情報や編集人が分散するのはちょっとなあと思う
0068デフォルトの名無しさん
2010/08/29(日) 03:06:000069デフォルトの名無しさん
2010/08/29(日) 12:32:26ん・・・ とりあえず記事がある程度仕上がったら考える。
0070デフォルトの名無しさん
2010/08/29(日) 12:54:32"文字列".dup ← char[]
これどういう意図があるんだろう
D1→D2時のdupの修正し忘れ?
0071デフォルトの名無しさん
2010/08/29(日) 12:58:35連投すまん
0072デフォルトの名無しさん
2010/08/29(日) 15:02:110073デフォルトの名無しさん
2010/08/31(火) 01:04:47struct S{
//ubyte[65528] m;// OK
ubyte[65529] m;// Access Violation
}
void main()
{
writeln(S());
}
なんだこれ?
ちなみに一定数(環境依存)を超えるとStack Overflowってのもあった
0074デフォルトの名無しさん
2010/08/31(火) 07:27:59void main() {S[100] s;}
とかやると実行時Stack Overflowになるねぇ
0075デフォルトの名無しさん
2010/08/31(火) 11:07:54http://codepad.org/IAL91LHa
つか逆に大きな配列だからと勝手にヒープ確保されたらたまらん。
007673
2010/08/31(火) 14:51:34そこ__VERSION__ == 1026だが
あと俺が言いたかったのはwritelnに渡すと・・・ってことだったんだが流石に伝わらんかったか
0077デフォルトの名無しさん
2010/08/31(火) 19:36:22→DirEntryを初期化してる部分を削ると100倍くらい早くなる
→更新日時とかを入れるときに使ってるstd.date.FILETIME2d_time()が
他の処理の100倍くらい時間を食ってるっぽい
std.dateが徹底的にタコということでよろしいか?
0078デフォルトの名無しさん
2010/08/31(火) 21:22:55YaoとJohnathanに期待。
http://lists.puremagic.com/pipermail/phobos/2010-August/002187.html
0079デフォルトの名無しさん
2010/09/01(水) 02:21:400080デフォルトの名無しさん
2010/09/01(水) 03:41:481・2どっちでもいいです。
0081デフォルトの名無しさん
2010/09/01(水) 22:02:260082デフォルトの名無しさん
2010/09/02(木) 00:06:190083デフォルトの名無しさん
2010/09/02(木) 19:27:37ただしstd.socketは間もなく(ry
0084デフォルトの名無しさん
2010/09/02(木) 19:42:39unix界隈で遊んでるような人にとってはカスみたいなものかもしれんけど
Win使ってる一般人とかそういう人向けにアプリ書いてる人から見れば
GUIライブラリの無い言語 == 存在しない言語 だからなぁ
0085デフォルトの名無しさん
2010/09/02(木) 21:12:490086デフォルトの名無しさん
2010/09/02(木) 21:35:110087デフォルトの名無しさん
2010/09/02(木) 22:55:22D2に移植する途中で死んだみたいだし
0088デフォルトの名無しさん
2010/09/03(金) 08:40:32オレ引きとって続き書くよ?
0089デフォルトの名無しさん
2010/09/03(金) 17:46:53こちら http://www.dsource.org/projects/descent/ を参考に
インストール、設定を済ませたと思うのですが、
参考動画のようなオーバーライドの補完等ができません。
以下のように戻り値を受ける形だと補完されるのですが、
int a = str ( まで入力してCtrl+Space)
strやstdのみの補完や、
クラスメンバの関数やオーバーライドの補完が全く機能していません。
(op〜関数はopまで打つと補完されますが、
super.opで保管しても super.override void op〜・・・ となり使えません)
JDTやインクルードパスは問題ないと思うのですが、
どの辺を注意したら良いでしょうか?
0090デフォルトの名無しさん
2010/09/03(金) 19:04:32http://hg.dsource.org/projects/dwt2
これがDWT2のリポジトリ。
0091デフォルトの名無しさん
2010/09/03(金) 19:47:12D1+Tangoというプログラミング言語だ。
いやD1ですらない。
druntimeというお情けがいつまでもらえるかはわからん。
0092デフォルトの名無しさん
2010/09/03(金) 20:01:04torhusという死に体のDWTに唯一パッチを送り続けていた人がいて、
一月半くらい前にとうとうforkした
ttp://bitbucket.org/torhus/dwt2
でもその後音沙汰が無い
彼に強力してあげてください
0093デフォルトの名無しさん
2010/09/03(金) 20:10:590094デフォルトの名無しさん
2010/09/03(金) 21:58:17ttp://www.dsource.org/projects/qtd
0095デフォルトの名無しさん
2010/09/04(土) 00:53:01Σ゚(゚Д)
0096デフォルトの名無しさん
2010/09/04(土) 02:01:51auto d = new char[n];
for(int i = 0; i < n; i++)d[i] = s[i];
009788
2010/09/04(土) 02:05:31ありがとう。
どこまでできるかわからんけどやってみるよ!
>>93
やっぱりそういう需要ってあるよね。
Dの適用領域からいってDWTみたいなのは必要だと思うんだ。
0098デフォルトの名無しさん
2010/09/04(土) 02:31:55>char* sからchar[] dに変換する方法って↓しかない?
>auto d = new char[n];
>for(int i = 0; i < n; i++)d[i] = s[i];
d[] = s[];ってできない?
0099デフォルトの名無しさん
2010/09/04(土) 02:49:35s[]は出来ないね
ポインタは配列として扱った時
長さ情報持ってないからスライス出来ないって事かな
0100デフォルトの名無しさん
2010/09/04(土) 02:52:060101デフォルトの名無しさん
2010/09/04(土) 03:04:37Macなら多少の需要はあるんじゃないかな?
Linuxはあまりないかもしれないけど、アプライアンスとかなら、あるいは。
0102デフォルトの名無しさん
2010/09/04(土) 03:13:570103デフォルトの名無しさん
2010/09/04(土) 03:16:540104デフォルトの名無しさん
2010/09/04(土) 11:23:33実は範囲を指定すればスライスできる
d = s[0 .. strlen(s)];
0105デフォルトの名無しさん
2010/09/04(土) 11:25:39ただOS自体の比率でWindowsとMacが圧倒的だからなぁ
PCでlinux使ってる人なんか1%もいないんじゃないの
0106デフォルトの名無しさん
2010/09/04(土) 15:32:32>>>96
>実は範囲を指定すればスライスできる
>d = s[0 .. strlen(s)];
左辺をd[]にして並行処理できない?というのが目的ですた
0107デフォルトの名無しさん
2010/09/04(土) 17:56:42今のトレンド知らないけど
・継承してクラスの内側でイベント実装タイプ
・外側からdelegateでイベントリスナー追加みたいなタイプ
俺は前者が好きだなクラス内に共通のデータ置けるし
0108デフォルトの名無しさん
2010/09/04(土) 17:58:510109デフォルトの名無しさん
2010/09/04(土) 18:57:480110デフォルトの名無しさん
2010/09/04(土) 19:53:40参照取るなら並列処理するまでもなくね?
…あれ?スライスって参照だよね?
0111デフォルトの名無しさん
2010/09/05(日) 04:01:07好みによるけど、後者かな。
今のOOPの流れ自体、継承より委譲だし。
JavaみたいにEventListener登録型もなくはないが
delegateを使えばコーディング量が劇的に減る。
エディタ派も嬉しいんじゃないかと。
ついでに聞いてみたいんだけど、LinuxでDって
どういう用途に使われることが多いのかな。
サーバー系の使い勝手がよいライブラリありますか?
0112デフォルトの名無しさん
2010/09/05(日) 06:03:210113デフォルトの名無しさん
2010/09/05(日) 12:48:02クラス標準の関数をデリゲートの呼び出しに充てておくとかすると並列に実装可能かな。
>>111
サーバ系で言うと、数値計算と文字列処理の組み合わせで、
バイオ系(bioengineering+bioinformatics)なんかは実はD最強ではないかと思う。
C#のdynamic型みたいなのも欲しいが、variantで実装可能かなあ。
0114デフォルトの名無しさん
2010/09/05(日) 13:28:43Tangoを使ってやろうってのはあったけど,コンセプトだけで死んでた気がする
まぁテンプレートライブラリもなければORMもなかったわけで…
011589
2010/09/05(日) 22:46:34>D 1.x is fully supported.
>D 2.x is partially supported
これが全てだったようで、
D1のobject.dへパスを通せば出来る子になるんですが、
D2のobject.dへパスを通してもダメな子ということでした。
Descentの現状最新版(0.5.6)でD2を使う場合、
D1もインストールして両方へパスを通しておけば、そこそこ無難に動くようです。
ブランチに0.6が上がっていたので、明日あたりにこちらも試してみたいと思います。
0116デフォルトの名無しさん
2010/09/08(水) 04:01:59下のソースがコンパイル通っちゃって、走らすと[2]って出力が出るんだが、
引数の配列の中身を変更させない関数定義ってできないの?
import std.stdio;
void main()
{
int[] a = [1];
inc(a);
writefln(a);
}
void inc(in int[] a) { a[] += 1; };
0117デフォルトの名無しさん
2010/09/08(水) 07:24:32incの冒頭辺りでa.dupでコピー作ればいい
0118デフォルトの名無しさん
2010/09/08(水) 11:40:190119デフォルトの名無しさん
2010/09/08(水) 16:02:51http://sourceforge.jp/magazine/10/09/07/0436202
だってお
0120デフォルトの名無しさん
2010/09/08(水) 17:09:590121デフォルトの名無しさん
2010/09/08(水) 20:01:300122デフォルトの名無しさん
2010/09/09(木) 00:21:02>>116 を
void inc(in immutable int[] a) { a[] += 1; };
void inc(in const(int)[] a) { a[] += 1; };
と変更してもやはり同じ結果になったぞ!
void inc(in const(int)[] a) { a[0] += 1; };
とかだとコンパイルエラー
0123デフォルトの名無しさん
2010/09/09(木) 00:33:10* *
* バグです +
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
0124デフォルトの名無しさん
2010/09/10(金) 20:02:08void main() {
string s = "a" "bc" "d";
writeln(s);
}
abcd
これって仕様のどこに載ってるんだ?
0125デフォルトの名無しさん
2010/09/10(金) 20:12:150126デフォルトの名無しさん
2010/09/10(金) 20:41:15http://www.kmonos.net/alang/d/2.0/lex.html
文字列リテラル の最後のところ
> 演算子~でつなげられているか、 あるいは単純に並べて書かれている文字列どうしは結合されます
> 以下は全て同じ意味です:
0127デフォルトの名無しさん
2010/09/10(金) 21:17:41確かに載ってるありがとう
switch (s) {
case "a", "b"
"c", "d":
...
break;
}
みたいなコード書いて5分くらい嵌った
0128デフォルトの名無しさん
2010/09/14(火) 05:21:240129デフォルトの名無しさん
2010/09/14(火) 11:32:49VisualDはVS2010のデバッガが使えるってだけで最高だけど、やっぱりインテリセンスがなぁ。
0130デフォルトの名無しさん
2010/09/14(火) 17:42:21デフォでUTF-8にして欲しいけどな
0131デフォルトの名無しさん
2010/09/15(水) 00:58:230132デフォルトの名無しさん
2010/09/15(水) 01:00:250133デフォルトの名無しさん
2010/09/16(木) 18:57:36import test;
int main( char[][] args ) {
logger!("hoge").test();
return 0;
}
--test.d
import std.stdio;
template logger( string s, string file = __FILE__, int line = __LINE__ ) {
void test() {
writefln( "%s %s %d",s, file, line );
}
}
--実行結果
hoge test.d 4
(´・ω・`)
0134デフォルトの名無しさん
2010/09/16(木) 19:34:100135デフォルトの名無しさん
2010/09/16(木) 19:36:08まーたdmdのバグかと思って必死に調べたらコードのバグだった
たまにはそんなこともあるんだな…
0136デフォルトの名無しさん
2010/09/16(木) 22:07:01>>133のコードは意図した動作にできるんだろうか
マクロだと呼び出し側のスコープで変数を評価するとかできるんだよね?
0137デフォルトの名無しさん
2010/09/16(木) 23:44:530138デフォルトの名無しさん
2010/09/17(金) 00:03:10テ、テンプレートだって
void logger( string file = __FILE__, int line = __LINE__ )(string msg){
writefln( "%s %s %d", msg, file, line );
}
ってできるんだからねっ!!
0139133
2010/09/17(金) 10:09:19でもこう書いてあったもので・・・
http://www.kmonos.net/alang/d/2.0/template.html
>__FILE__ と __LINE__ は、 テンプレートがインスタンス化された場所のファイル名と行番号に展開されます。
0140デフォルトの名無しさん
2010/09/17(金) 19:51:30dmdにはよくあること
0141デフォルトの名無しさん
2010/09/17(金) 19:56:31D1でコンパイルした可能性は?
0142デフォルトの名無しさん
2010/09/17(金) 21:33:150143デフォルトの名無しさん
2010/09/18(土) 11:18:070144デフォルトの名無しさん
2010/09/18(土) 13:27:51実行モジュール作って公開した時点で
ソース公開の義務が発生しちゃうの?
0145デフォルトの名無しさん
2010/09/18(土) 13:31:400146デフォルトの名無しさん
2010/09/18(土) 13:50:38ときどきヘッダ翻訳に際して元と違うライセンスを設定する奴もいるから注意な
0147144
2010/09/18(土) 14:46:06ただで使わせてもらっといてなんだけど
ライセンスって嫌だね・・
誰でも使えるようにするならPublicDomainに統一してほしい・・
0148デフォルトの名無しさん
2010/09/18(土) 15:23:20名前と戻り値と引数列に著作権は発生するのか
0149デフォルトの名無しさん
2010/09/18(土) 17:22:09ただしUNIX裁判よろしくオリジナルをコピーしてないという証明はめんどい
0150デフォルトの名無しさん
2010/09/18(土) 18:13:050151デフォルトの名無しさん
2010/09/18(土) 20:46:21Rubyなんかも、わざわざライセンス不明のパッチを避けて、
それを見たことがない人に直させてたりするね。
0152デフォルトの名無しさん
2010/09/20(月) 04:10:08日本でもPublic Domainが出来るようになったらいいのになぁと常々思う
0153デフォルトの名無しさん
2010/09/20(月) 06:57:140154デフォルトの名無しさん
2010/09/20(月) 11:26:46日本では著作権放棄はできないけど、言い回しを工夫してCCとかNYSLみたいなのはあるね。
0155デフォルトの名無しさん
2010/09/20(月) 13:17:59それこそCC0とかNYSLで放り出せばいいんじゃね
CC0が出てきてからNYSLは非推奨になったんだっけ?
0156デフォルトの名無しさん
2010/09/20(月) 13:29:300157デフォルトの名無しさん
2010/09/20(月) 14:40:090158デフォルトの名無しさん
2010/09/20(月) 19:18:56元がLGPLのライブラリを使う話じゃなかったっけ?
0159デフォルトの名無しさん
2010/09/21(火) 19:42:01それはそうと
ttp://dusers.dip.jp/modules/forum/index.php?topic_id=80#post_id310
放置された数々のライブラリを使うべく立ち向かう企画とかやってくれないかなー
tioportとかDDBIとかwxDをmingwで使おうとするとかドン・キホーテvs風車のような熱い展開になりそうだ
0160デフォルトの名無しさん
2010/09/22(水) 21:22:18なんかGUIどうすっかなーってAWTみたいなの目指して書いたり消したりして
なかなかちゃんとしたアプリ作れない
0161デフォルトの名無しさん
2010/09/23(木) 02:40:320162デフォルトの名無しさん
2010/09/23(木) 10:15:540163デフォルトの名無しさん
2010/09/23(木) 11:58:140164デフォルトの名無しさん
2010/09/23(木) 13:04:470165デフォルトの名無しさん
2010/09/23(木) 14:10:22http://d-programming-language.org/
0166デフォルトの名無しさん
2010/09/23(木) 15:26:14inabaさん乙すぎるだろ
0167デフォルトの名無しさん
2010/09/23(木) 17:01:15やべえなめっちゃ好きな色になっとる
0168デフォルトの名無しさん
2010/09/23(木) 17:07:570169デフォルトの名無しさん
2010/09/23(木) 20:59:480170デフォルトの名無しさん
2010/09/24(金) 01:25:088MBのexeが出来たw
しかも動作には、QtDのDLLと、QtのDLLが必要ときたもんだ
QtのDLLは全部で700MBはあるし、どうすりゃいいんだよコレw
0171デフォルトの名無しさん
2010/09/24(金) 03:06:080172デフォルトの名無しさん
2010/09/24(金) 07:22:08たったの20MBだよ
0173デフォルトの名無しさん
2010/09/24(金) 09:53:10確かにどっか別世界にこんにちはしてる感はある。
0174デフォルトの名無しさん
2010/09/24(金) 15:42:540175デフォルトの名無しさん
2010/09/24(金) 15:45:350176デフォルトの名無しさん
2010/09/24(金) 18:26:445、6年前のQt3の頃は全部ひっくるめてたんだから
0177デフォルトの名無しさん
2010/09/24(金) 20:07:02話のわかるヤツだ
0178デフォルトの名無しさん
2010/09/24(金) 23:34:170179デフォルトの名無しさん
2010/09/24(金) 23:42:300180デフォルトの名無しさん
2010/09/24(金) 23:55:130181デフォルトの名無しさん
2010/09/25(土) 00:36:360182デフォルトの名無しさん
2010/09/25(土) 00:52:26今年圧縮したソフトでも余裕でひっかかったわ
0183デフォルトの名無しさん
2010/09/25(土) 16:24:540184デフォルトの名無しさん
2010/09/25(土) 16:28:30どうせ配布時にはzipなりの中なんだから通信負荷はupxかけなくても一緒だろ?
0185デフォルトの名無しさん
2010/09/25(土) 16:31:57外部記憶装置が遅くて計算とメモリが豊富な場合は意味がある
テープ・フロッピーの時代だと自己展開や自己書き換えはザラだった気がするが
0186デフォルトの名無しさん
2010/09/25(土) 17:11:42dllを圧縮レベルMaxにした日にゃ所々のdll読み込みで負荷が掛かるね
0187デフォルトの名無しさん
2010/09/25(土) 18:04:52最近のOSは実行可能ファイルはメモリマップドで読み込むから、
プロセスごとに実行時のコード展開が走ったりすると
複数起動されたときに共有できるものも共有できなくなる。
それで展開後のコードがスワップされたりしたら本末転倒だろ?
0188デフォルトの名無しさん
2010/09/25(土) 23:08:16◆基底クラスのメンバ→派生クラス→基底クラス
http://codepad.org/RrmwJXvw
※D2.048でもこうなる事を確認
C++だと派生クラス→基底クラス→基底クラスのメンバの順でデストラクト
http://codepad.org/P3Edu0L6
俺的には明らかにバグなんだけどDの仕様でこの順で正しいとかあるんですか
0189デフォルトの名無しさん
2010/09/26(日) 00:19:34それは仕様です。実は結構今更感が強い。
ついでにいうと、そういうことがあるからデストラクタでは
GCで回収される可能性のあるデータを弄ってはいけない。
0190デフォルトの名無しさん
2010/09/26(日) 00:38:09どうすればいいんだ・・・
0191デフォルトの名無しさん
2010/09/26(日) 01:14:25なんかスレ見てると、触ってみようかとないう気が途端に失せるんですが・・
0192デフォルトの名無しさん
2010/09/26(日) 01:18:30実用についてはお察し下さい
0193デフォルトの名無しさん
2010/09/26(日) 01:34:36スレ見なければいいよ!
0194デフォルトの名無しさん
2010/09/26(日) 06:47:010195デフォルトの名無しさん
2010/09/26(日) 12:30:440196デフォルトの名無しさん
2010/09/26(日) 15:13:220197デフォルトの名無しさん
2010/09/26(日) 15:46:18今のところtango風のコードは1行も無いがちゃんと動いてるようだ
D2にしたいなぁ…
0198デフォルトの名無しさん
2010/09/28(火) 15:51:30http://www22.atpages.jp/~dwiki/pukiwiki/index.php?%E5%BC%8F
New式の項目が説明放棄してるけど気にしない。
0199デフォルトの名無しさん
2010/09/28(火) 21:18:530200デフォルトの名無しさん
2010/09/29(水) 16:32:49ddbgって正常に動作してますか?
Eclipse+Descent+dmd2.049でコンパイル、通常起動までは行けるんですが、
デバッガを起動すると以下の感じでエラーに…
パスは合っているのですが。
Loading symbols from Path to hoge.exe
->Source file "Path to main.d" not found
0201デフォルトの名無しさん
2010/09/29(水) 17:41:58VisualStudioでのデバッグはなんだかんだで快適。それとそんなに重さも感じないし。
0202デフォルトの名無しさん
2010/09/29(水) 18:19:54ウチの職場に製品版のVisualStudioが無いのです・・・
小物の制作には使ってますが、.NETで事足りてしまいまして。
0203デフォルトの名無しさん
2010/09/29(水) 19:17:320204デフォルトの名無しさん
2010/09/29(水) 19:18:36>>202
Visual Dのページ見たか?
> It works with Visual Studio 2005, 2008 and 2010 as well as the free Visual Studio Shells.
~~~~~~~~~~~~~~~~~~~~~~~~~~~
0205デフォルトの名無しさん
2010/09/29(水) 19:25:080206デフォルトの名無しさん
2010/09/30(木) 00:10:48classに変数の定義とsettet/getterプロパティを追加するmixinてどう書くんでしょうか
mixin addprop!(T, "Name", "PropertyName"); こんな感じのmixin定義
↓
private T Name;
public @property T PropertyName(){return Name;}
public @property void PropertyName(T x){Name = x;}
0207デフォルトの名無しさん
2010/09/30(木) 00:44:22string addprop( T, string Name, string PropName )(){
string result;
result ~= "private " ~ T.stringof ~ " " ~ Name ~ ";";
result ~= "public @property " ~ T.stringof ~ " " ~ PropName ~ "(){return " ~ Name ~ ";}";
result ~= "public @property void " ~ PropName ~ "(" ~ T.stringof ~ " x){" ~ Name ~ " = x;}";
return result;
}
使う時
mixin( addprop!(T, "Name", "PropertyName" )() );
0208デフォルトの名無しさん
2010/09/30(木) 00:47:59文字列mixinとtemplate mixinが別物だから話がややこしくなるんだよな
0209デフォルトの名無しさん
2010/09/30(木) 00:55:07あああ・・なるほどありがとう
>文字列mixinとtemplate mixinが別物
まさにこれが区別ついてなかった
0210202
2010/09/30(木) 10:25:09一応インストーラーは起動したんですが、
Register with VS xxx の項目にチェックが入れられなかったので
てっきり使えないものかと・・・
ということで入れてみましたが、Dのプロジェクトが・・・選べない?
もうちょい調べてきます。
0211202
2010/09/30(木) 10:32:47http://www22.atpages.jp/~dwiki/pukiwiki/index.php?Visual%20D
何とかイケそうです。ありがとうございました。
0212デフォルトの名無しさん
2010/09/30(木) 12:37:400213デフォルトの名無しさん
2010/09/30(木) 21:42:340214デフォルトの名無しさん
2010/09/30(木) 23:11:490215デフォルトの名無しさん
2010/10/01(金) 00:07:590216202
2010/10/01(金) 10:38:34Eclipse+Descentの方がコーディング面ではかなり上かなと。
ddbgがダメならgdbで試してみるかぁ。
0217デフォルトの名無しさん
2010/10/01(金) 22:56:460218デフォルトの名無しさん
2010/10/02(土) 10:35:070219デフォルトの名無しさん
2010/10/02(土) 13:54:20http://wiki.dprogramming.com/Dfl/Snapshots
0220デフォルトの名無しさん
2010/10/02(土) 13:59:13とでるんですが、coreフォルダ自体がありません。
本家のdmd.2.049.zipをダウンロードしたんですが、他にダウンロードするものがあるんでしょうか?
0221デフォルトの名無しさん
2010/10/02(土) 14:08:530222デフォルトの名無しさん
2010/10/02(土) 14:21:07だから2.049で動かなくても一向に驚かん
バージョンの0.001違いは死亡フラグ
dmd.2.047だけあれば大丈夫だと思う
0223デフォルトの名無しさん
2010/10/02(土) 16:03:25%PATH%とsc.ini確認するといいと思うよ
0224デフォルトの名無しさん
2010/10/02(土) 18:16:180225デフォルトの名無しさん
2010/10/02(土) 18:41:330226デフォルトの名無しさん
2010/10/02(土) 19:15:150227デフォルトの名無しさん
2010/10/02(土) 19:37:080228デフォルトの名無しさん
2010/10/02(土) 20:59:490229デフォルトの名無しさん
2010/10/02(土) 22:01:580230デフォルトの名無しさん
2010/10/02(土) 22:43:46何度もすいませんが、dfl.internal.dlib.dで、D_Version2になってないのかstd.gcをインポートしようとします。
弄ってDFL_D2にしたら、今度はコンパイルが終わりません。
全部インストラーを使って環境を作り直しても、変わりませんでした。
コンパイル時に何か指定しないとだめなんでしょうか?
ツールはdsssを使っています。
0231デフォルトの名無しさん
2010/10/03(日) 02:00:49dfl.exeで
0232デフォルトの名無しさん
2010/10/03(日) 02:58:35D2はもう安定版になったとみてもいいような?
0233デフォルトの名無しさん
2010/10/03(日) 06:29:42何度もありがとうございました。
0234デフォルトの名無しさん
2010/10/03(日) 13:23:580235デフォルトの名無しさん
2010/10/03(日) 13:58:250236デフォルトの名無しさん
2010/10/03(日) 15:23:400237デフォルトの名無しさん
2010/10/03(日) 16:14:43毎回フルビルドするbudしか選択肢が無い
0238デフォルトの名無しさん
2010/10/03(日) 17:18:040239デフォルトの名無しさん
2010/10/03(日) 17:27:19http://prowiki.org/wiki4d/wiki.cgi?DevelopmentWithD/Tools/Build
0240デフォルトの名無しさん
2010/10/03(日) 17:37:00おおありがとう
いつの間にか色々あるなぁ
0241デフォルトの名無しさん
2010/10/03(日) 17:43:33継承もデフォルトはprivateだと思ってました。
0242デフォルトの名無しさん
2010/10/03(日) 17:48:39protectedに至っては何に使うのかもわからん。
0243デフォルトの名無しさん
2010/10/03(日) 17:50:13Error 42: Symbol Undefined _D5layer12__ModuleInfoZ
--- errorlevel 1
C:\D\dmd2\windows\bin\dmd.exe main.d -debug -version=DFL_EXE -IC:\D\dmd2\import -L/exet:nt/su:console:4.0 C:\D\dmd2\windows\lib\DFL_DE~1.LIB
というエラーがでるんですが、import layerしても直りません。
これは一体?
0244デフォルトの名無しさん
2010/10/03(日) 17:50:190245デフォルトの名無しさん
2010/10/03(日) 17:56:10リンクするときに、_D5layer12__ModuleInfoZ が無いって言ってるわけか。
DFL_DE~1.LIBの拡張子が.LIBだからまずいのかな・・・?
0246デフォルトの名無しさん
2010/10/03(日) 18:04:280247デフォルトの名無しさん
2010/10/03(日) 18:09:140248デフォルトの名無しさん
2010/10/03(日) 18:41:38C/C++だとincludeだから、その辺で勘違いしてたことが俺はあった。
0249デフォルトの名無しさん
2010/10/03(日) 19:35:43bud main.d -full -cleanで解決しました。
お騒がせしました。
ありがとうございました><
0250デフォルトの名無しさん
2010/10/04(月) 01:03:36よく考えたら、同じモジュールのクラスなら、privateでも直接操作出来る事を思いだしました。
0251デフォルトの名無しさん
2010/10/04(月) 02:22:100252デフォルトの名無しさん
2010/10/04(月) 06:20:130253デフォルトの名無しさん
2010/10/04(月) 10:50:480254デフォルトの名無しさん
2010/10/04(月) 17:39:39Dに飽きても再利用できるし
0255デフォルトの名無しさん
2010/10/04(月) 19:21:31バージョンアップするたびに書き換える必要がなければDのライブラリとは言えないぞ
0256デフォルトの名無しさん
2010/10/04(月) 20:25:230257デフォルトの名無しさん
2010/10/04(月) 20:43:27xmlが難しいならyaxamlでもいい
コンパイル時yamlパーサってあったっけ?
0258デフォルトの名無しさん
2010/10/04(月) 22:14:02オーバーライドしてるか判定したいんですけど
オーバーライドの挙動がおかしい?
http://codepad.org/trNnaiPJ
このコードをD1.030でコンパイル/実行
< override : yes >
< override : yes >
D2.048でコンパイル/実行
< override : no >
< override : yes >
D2.048だと子クラスBが親クラスAのメソッドfuncをオーバーライドしてない場合
孫クラスCから子クラスBのメソッドfunc(super.func)を参照すると孫クラスCの
メソッドが見えちゃうっぽい。
D1.030は孫クラスのsuper.funcは親クラスAのfuncになる。
D1.030の方が挙動が正しいと思うんだけど違うのかな
0259デフォルトの名無しさん
2010/10/05(火) 15:45:28Error: alias win32.winbase.LPOFSTRUCT is deprecated
ってエラーがでるんですが、推奨してないでエラーがでるってのは他に何を使えばいいんでしょう?
0260デフォルトの名無しさん
2010/10/05(火) 18:26:17win32APIの事を俺らに調べさせるつもりか。
0261デフォルトの名無しさん
2010/10/05(火) 19:47:01…コメントとか?
0262デフォルトの名無しさん
2010/10/05(火) 21:47:48deprecated("Dじゃmainの戻り値はvoidが推奨なんだぜ") int main();
void main(string[]);
みたいな
0263デフォルトの名無しさん
2010/10/05(火) 21:50:04deprecatedは、Dの属性。
非推奨の機能に付ける。
0264デフォルトの名無しさん
2010/10/05(火) 21:50:44pragma(msg, "fugaは殺したからhogeを使ってね");
int fuga() {
/+
...
+/
}
0265デフォルトの名無しさん
2010/10/05(火) 21:52:36埋め込みドキュメントにそんな項目があったような?
0266デフォルトの名無しさん
2010/10/05(火) 22:30:240267デフォルトの名無しさん
2010/10/05(火) 22:35:16Dなら入りかねんな
0268デフォルトの名無しさん
2010/10/05(火) 23:53:56あんまり意味ないような、、、
0269デフォルトの名無しさん
2010/10/06(水) 00:23:46その手間を省いてくれたり
意味なんてスペルチェックと同程度だと思うよ
0270デフォルトの名無しさん
2010/10/06(水) 00:59:21報告したいけどフォーラム?の使い方わからん&英語読めない…
0271デフォルトの名無しさん
2010/10/06(水) 01:15:32コンパイルエラーの時にメッセージがでても、結局ドキュメントやソースを見る事になるような、、、
エラーの時に代替え機能の戻り値や引数や目的なんかを全部表示するなら別だけど。
0272デフォルトの名無しさん
2010/10/06(水) 01:18:42公式和訳の人に頼んでみるとか。
やってくれるかはしらんけど。
0273259
2010/10/06(水) 06:17:40コンパイル時に-dをつけて、こちらの別のライブラリを使ってみたら動きました。
http://pen-jr.org/lang_d/win32/htod.php
ありがとうございました。
0274デフォルトの名無しさん
2010/10/06(水) 07:01:22ライブラリを変えて警告が出なくなりました、って、解決としてどうよ。
0275デフォルトの名無しさん
2010/10/06(水) 22:35:52さすがにボランティアでしてくれてる方に頼む勇気はないすわw
0276デフォルトの名無しさん
2010/10/07(木) 01:22:230277デフォルトの名無しさん
2010/10/07(木) 10:13:42DMD2.049でここのコードがエラーになるのは何ぞ?
0278デフォルトの名無しさん
2010/10/07(木) 10:47:260279デフォルトの名無しさん
2010/10/07(木) 11:03:11関数を実行するような形のmixinなら平気なんだけどな・・・
0280デフォルトの名無しさん
2010/10/07(木) 13:01:53stringだとエラー出ないぞ
0281デフォルトの名無しさん
2010/10/07(木) 15:25:17template GenStruct(string Name, string M1)
{
string GenStruct = "struct " ~ Name ~ "{ int " ~ M1 ~ "; }";
}
mixin(GenStruct!("Foo", "bar"));
Error: argument to mixin must be a string, not (GenStruct)
0282デフォルトの名無しさん
2010/10/07(木) 15:40:06{
const string GenStruct = "struct " ~ Name ~ "{ int " ~ M1 ~ "; }";
}
mixin(GenStruct!("Foo", "bar"));
0283デフォルトの名無しさん
2010/10/07(木) 16:00:34immutable const・・・
まぁいいか。サンクス。
0284デフォルトの名無しさん
2010/10/07(木) 17:04:40string は immutable(char)[] だから、immutable const にはならないよ
const( immutable(char)[] )
immutableは、charに対してのもの
constは、[ ] に対してのもの
結局 const char[] と同じなんだけど
0285デフォルトの名無しさん
2010/10/07(木) 17:27:000286デフォルトの名無しさん
2010/10/07(木) 17:50:34みたいな書き方は、D2から使えるようになったものだから
D1,D2共通で使えるconstがいいのでは?
0287デフォルトの名無しさん
2010/10/07(木) 17:57:530288デフォルトの名無しさん
2010/10/07(木) 18:02:190289デフォルトの名無しさん
2010/10/07(木) 18:13:490290デフォルトの名無しさん
2010/10/07(木) 18:22:34(今回のそのコードではコンパイル時に決定されるので問題ないけど)
0291デフォルトの名無しさん
2010/10/07(木) 18:23:11だから数値ならいいけど、文字列をenumにすると、使った回数分実体が展開されてしまうけど
mixin前提なら有りの気がする。
0292デフォルトの名無しさん
2010/10/07(木) 18:25:360293デフォルトの名無しさん
2010/10/07(木) 18:37:230294デフォルトの名無しさん
2010/10/07(木) 19:15:100295デフォルトの名無しさん
2010/10/07(木) 22:54:54大切な事なので俺も言っとく
0296デフォルトの名無しさん
2010/10/07(木) 22:59:00何がどうなって捨てるべき存在になったんだ?
0297デフォルトの名無しさん
2010/10/07(木) 23:02:210298デフォルトの名無しさん
2010/10/07(木) 23:22:50デフォルトでなんかの(指定したor決まった名前の)moduleをimportして欲しい。
具体的には「import foo.all」を「import foo」って書きたい。
>>296-297
tangoは次世代標準を目指して開発されていて
ウォルたんも「phobosもtangoも似たようなところを目指してるから緩やかに一つになるよ将来的には」みたいなことをいってた(と思う)。
けど誰もが思ってた通りそんな未来はこなくて、phobosも2.0以降もりもり進化してきてこっちがみんな楽しみになってきちゃった。
……みたいな感じか? 具体的に何が問題だったのかは色々意見があるだろうけど。
0299デフォルトの名無しさん
2010/10/07(木) 23:40:11コア部分まで置換しようとするから…
0300デフォルトの名無しさん
2010/10/08(金) 00:10:58Tangoのコードを使ったら、実行ファイル配布の際に必ず「私はTangoを使いました」と
言わなきゃいけないライセンス(BSDライセンス)を採用している。
これのためにPhobosにマージすることはできないため、統合はできない。
何度も議論されて結局変わらない。
0301デフォルトの名無しさん
2010/10/08(金) 00:18:450302デフォルトの名無しさん
2010/10/08(金) 00:21:050303デフォルトの名無しさん
2010/10/08(金) 05:01:30大した理由なかったら無闇に進化遅れさせてるだけだと思うんだけど
0304デフォルトの名無しさん
2010/10/08(金) 15:05:260305デフォルトの名無しさん
2010/10/08(金) 15:35:10そのおかげでdruntimeがphobosから分離されたのがtangoの唯一の成果
0306デフォルトの名無しさん
2010/10/08(金) 17:09:29そうですね。
とりあえずこれ読めばいいんじゃないかな。
http://www.kmonos.net/alang/d/2.0/garbage.html
0307デフォルトの名無しさん
2010/10/08(金) 23:29:030308デフォルトの名無しさん
2010/10/09(土) 01:21:000309デフォルトの名無しさん
2010/10/09(土) 01:59:43immutableな文字列とか入ってる時点でGCなしにするの不可能だと思うんだけど。
0310デフォルトの名無しさん
2010/10/09(土) 07:27:59ウォルたんの労力ハンパないだろうけど。
0311デフォルトの名無しさん
2010/10/09(土) 11:34:260312デフォルトの名無しさん
2010/10/09(土) 11:38:270313デフォルトの名無しさん
2010/10/09(土) 13:03:19C++/CLIの方がましだわ
0314デフォルトの名無しさん
2010/10/09(土) 17:07:39それだとimmutableの価値がない。immutableはノーコストでスレッドをまたいで使えることに意味がある。
0315デフォルトの名無しさん
2010/10/09(土) 18:06:310316デフォルトの名無しさん
2010/10/09(土) 18:53:40別に参照カウンタでもimmutableの価値は変わらんと思うが?
x86ならlockプレフィクス命令で同期無しで参照カウンタ増減させられるし。
0317デフォルトの名無しさん
2010/10/10(日) 11:13:58関数内にtemplateを書けないのが苦痛に思えてくる
楽さを追求し始めたらキリがないな
0318デフォルトの名無しさん
2010/10/11(月) 09:45:37他の機能は普通に使えてるんですが、下記の
wchar[] length = "STATUS "~key~" LENGTH";
HANDLE nil;
int n = 0;
wchar[255] c;
mciSendString( cast(const wchar*)length, c.ptr, n, nil);
writefln( c);
writeflnで帰ってきた再生時間を表示しようとすると、
core.exception.UnicodeException : iliegal UTF-16 value
と出ます。なんでUTF-16なのか分かりません。エラーでググッってみたんですが、
これはcに何かしないと駄目なんでしょうか?
0319デフォルトの名無しさん
2010/10/11(月) 10:01:27文字列長調べてc.lengthにセットしてやればいいんでは。
0320デフォルトの名無しさん
2010/10/11(月) 10:28:540321デフォルトの名無しさん
2010/10/11(月) 10:30:290322デフォルトの名無しさん
2010/10/11(月) 13:05:36writefln( c[0 .. c.indexOf('\0')] );
0323デフォルトの名無しさん
2010/10/11(月) 14:47:44となるとwxDとDWTしか選択肢が無いわけだが、ひょっとしてwxDって死んだ?
0324デフォルトの名無しさん
2010/10/11(月) 15:37:10通りました。ありがとうございました。
0325デフォルトの名無しさん
2010/10/11(月) 16:00:40GtkDさんの事もたまには(ry
0326デフォルトの名無しさん
2010/10/11(月) 16:33:06GtkD is GTK.
GTK is shit.
って言ってた
0327デフォルトの名無しさん
2010/10/11(月) 16:37:30三段論法でGtkDがshitと言っているのか悩ましいところだな
0328デフォルトの名無しさん
2010/10/11(月) 16:41:390329デフォルトの名無しさん
2010/10/11(月) 16:50:540330デフォルトの名無しさん
2010/10/11(月) 17:57:24見たら、FreeBSD に D2 があるみたいに書いてあって wktk したんだけど、
やっぱり、そんなわけないよねー orz
0331デフォルトの名無しさん
2010/10/11(月) 18:48:50え。
0332デフォルトの名無しさん
2010/10/11(月) 19:53:580333デフォルトの名無しさん
2010/10/11(月) 20:46:290334デフォルトの名無しさん
2010/10/11(月) 21:23:250335デフォルトの名無しさん
2010/10/11(月) 23:22:59DDTを↓に書いてある方法で取ろうとしたけど、無理みたい。
http://code.google.com/a/eclipselabs.org/p/ddt/wiki/UserGuide
なんか間違ってる?
0336デフォルトの名無しさん
2010/10/11(月) 23:51:57>>2のDescentがポピュラーなんじゃないかな
0337335
2010/10/12(火) 00:43:51いけた。サンクス。
Descentのページに、
「This project is dead. Please use http://code.google.com/a/eclipselabs.org/p/ddt/」
ってあるからDDTを取りにいったんだけど。。。
もしかしてD用のプラグインはみんな死んでる?
0338デフォルトの名無しさん
2010/10/12(火) 13:34:51あー、src に freebsd.mak なんて転がってるじゃん。マジで知らんかった。
これから試しにコンパイルしてみるわ。
0339デフォルトの名無しさん
2010/10/12(火) 20:28:55どうだったの?
0340デフォルトの名無しさん
2010/10/12(火) 22:12:260341デフォルトの名無しさん
2010/10/12(火) 22:31:10実数でよくね?
0342デフォルトの名無しさん
2010/10/12(火) 22:37:500343デフォルトの名無しさん
2010/10/13(水) 01:31:09ってなんですかね?
0344デフォルトの名無しさん
2010/10/13(水) 01:34:100345デフォルトの名無しさん
2010/10/13(水) 11:12:04おおう。解決。
ありがとう。
0346デフォルトの名無しさん
2010/10/14(木) 00:18:17http://code.google.com/p/dxlib4d/
0347デフォルトの名無しさん
2010/10/14(木) 06:09:32いるか知らんが書いた人乙。
0348デフォルトの名無しさん
2010/10/14(木) 21:34:25ProcessのSystemを使ってコマンドプロンプトで立ち上げるように使えばいいカナと思ったんですが、
それだと任意のタイミングで落とせません。
Threadにもそれらしいものはみあたりませんでした。
0349デフォルトの名無しさん
2010/10/14(木) 21:51:42WM_CLOSEでも送ればいいんじゃないかな?
0350デフォルトの名無しさん
2010/10/15(金) 20:49:54↑の作者だれ?
0351デフォルトの名無しさん
2010/10/15(金) 21:18:53\ 丶 i. | / ./ /
\ ヽ i. .| / / /
\ ヽ i | / / /
\
-‐
ー
__ わ た し で す --
二 / ̄\ = 二
 ̄ | ^o^ |  ̄
-‐ \_/ ‐-
/
/ ヽ \
/ 丶 \
/ / / | i, 丶 \
/ / / | i, 丶 \
0352デフォルトの名無しさん
2010/10/15(金) 22:43:460353348
2010/10/16(土) 07:48:44TerminateProcessで強制終了ですが成功しました。
0354デフォルトの名無しさん
2010/10/16(土) 10:43:24通信しないなら
0355デフォルトの名無しさん
2010/10/16(土) 10:57:22importが全部終わったあとに末端から走り始めるんでしょうか?
実験して見た限りそうみえるんですが。
0356デフォルトの名無しさん
2010/10/16(土) 12:05:20\ 丶 i. | / ./ /
\ ヽ i. .| / / /
\ ヽ i | / / /
\
た わ し で す -‐
ー
__ __VV
>:::::::::::::::::::: <
_>':::::::: ::::::::<
,>'::::: ::::::::<
>::::::: :::::::::<
>;;::::: :::::::<
>i::::::::::::::ゞ<
'ヘトハト! ‐-
/
/ ヽ \
/ 丶 \
/ / / | i, 丶 \
/ / / | i, 丶 \
0357デフォルトの名無しさん
2010/10/16(土) 22:47:45報告遅れてすまん。
dmd2 自体のコンパイルはできたんだが、phobos がコンパイルできん。
std/c/freebsd/socket.d がないって言われる。
std/socket.d(85): Error: module socket is in file 'std/c/freebsd/socket.d' which cannot be read
でっちあげれば何とかなるのかな?
0358デフォルトの名無しさん
2010/10/16(土) 22:54:47http://www.digitalmars.com/d/archives/digitalmars/D/D2_and_FreeBSD_114434.html#N117260
あー、そういえば、FreeBSD の浮動小数点数、
いまだに long double が double 扱いなんだっけか。すっかり忘れてたわ。
0359デフォルトの名無しさん
2010/10/16(土) 23:29:07import std.stdio;
void main()
{
int a = 1;
string b = "mahime";
float c = 43.64;
writefln(a, b, c); // なんか怒られてコンパイル通らない
}
0360デフォルトの名無しさん
2010/10/16(土) 23:42:290361デフォルトの名無しさん
2010/10/16(土) 23:56:50うおおおおおおおおおおお
俺アホか・・・・
f.. f... formatted....
0362デフォルトの名無しさん
2010/10/17(日) 12:03:25今のwriteflnは先頭の引数が文字列じゃないといけない
0363デフォルトの名無しさん
2010/10/17(日) 12:38:100364デフォルトの名無しさん
2010/10/18(月) 10:41:22printfと書式一緒だけど?
あとwritelnてマルチスレッドだとメインスレッド以外出力されなくね?
0365デフォルトの名無しさん
2010/10/18(月) 13:14:470366デフォルトの名無しさん
2010/10/18(月) 13:24:130367デフォルトの名無しさん
2010/10/18(月) 15:21:010368デフォルトの名無しさん
2010/10/18(月) 15:37:340369デフォルトの名無しさん
2010/10/18(月) 15:41:130370デフォルトの名無しさん
2010/10/18(月) 15:42:450371デフォルトの名無しさん
2010/10/18(月) 15:47:410372デフォルトの名無しさん
2010/10/18(月) 15:52:570373デフォルトの名無しさん
2010/10/18(月) 15:56:39formattedをモジュール、lineをメソッドチェーンにして、
formatted.write(...).line; でいいじゃないか。
0374デフォルトの名無しさん
2010/10/18(月) 17:44:56頻繁に使うのも短く
めったに使わないのは長く
使い方が複雑なものはクラスにしてしまえ
0375デフォルトの名無しさん
2010/10/18(月) 17:46:58寿命が長いのは長く
0376デフォルトの名無しさん
2010/10/18(月) 18:07:41だんだんtangoじみてきたな
0377デフォルトの名無しさん
2010/10/18(月) 18:09:12「Enumeration使うと一行が長くなりすぎるよ?馬鹿なの?死ぬの?」
と言ってIteratorを新しく入れてるからなぁ
0378デフォルトの名無しさん
2010/10/18(月) 18:12:000379デフォルトの名無しさん
2010/10/18(月) 18:13:010380デフォルトの名無しさん
2010/10/18(月) 18:44:340381デフォルトの名無しさん
2010/10/18(月) 19:04:510382デフォルトの名無しさん
2010/10/18(月) 19:18:07「うるせーバカ楽なんだよ」
みたいな問答がFAQにあった気がする
0383デフォルトの名無しさん
2010/10/19(火) 00:32:020384デフォルトの名無しさん
2010/10/19(火) 00:43:320385デフォルトの名無しさん
2010/10/19(火) 00:47:410386デフォルトの名無しさん
2010/10/19(火) 06:03:30http://bitbucket.org/goshawk/gdc/wiki/Home
phobosのソースがなんかダメっぽい
動かないリリースを躊躇いもなくロールアウトするとか益荒男過ぎる
かつてのdmd0.x.xを見ているようだ
0387デフォルトの名無しさん
2010/10/19(火) 12:12:49先ほどThreadを扱うクラスで変な所でハマってしまいまして、原因がわからないため困っています。
問題のソースが要約していますがこんな感じで、Hoge::run内で強制終了してしまいます。
---ここから
class Param{}
class Hoge : Thread {
this( ref Param param) {
this.param = param;
super( &run );
}
void run() {
// paramを用いた無限ループ
}
Param param;
}
void main() {
Param param = new Param();
Hoge hoge = new Hoge( param );
hoge.start();
hoge.join();
}
---ここまで
で、以下のようにref修飾子を取ると直るのですが…
---修正内容ここから
- this( ref Param param) {
+ this( Param param) {
---ここまで
refの使用方法を間違っているのでしょうか?
CentOS5.5 DMD2.049です。
0388デフォルトの名無しさん
2010/10/19(火) 14:02:48classはrefつけなくても参照渡しだから、ref取って直るならそれでいいんじゃないかって気がする。
0389デフォルトの名無しさん
2010/10/19(火) 14:19:27明示的にref付けておいたほうが親切かなーと思いまして・・。
で、今クラスを受ける引数のrefを全部削除してみたら、
また落ちるようになった・・・
何これc++より難しいorz
0390387=389
2010/10/19(火) 15:12:53ともあれ極力ref無しで大丈夫そうです。
失礼しました。
0391デフォルトの名無しさん
2010/10/19(火) 15:45:01> 明示的にref付けておいたほうが親切かなーと思いまして・・。
誰にとって親切なのか
0392デフォルトの名無しさん
2010/10/19(火) 18:12:13間違いが少なくなっていいよね
これに限らずC#はJava並の安全性を確保しつつ先進的な機能を入れようとする姿勢に好感が持てる
でもテンプレートと破壊的変更が無いのは致命的だわ
0393デフォルトの名無しさん
2010/10/19(火) 18:16:290394デフォルトの名無しさん
2010/10/19(火) 18:28:240395デフォルトの名無しさん
2010/10/19(火) 18:30:340396デフォルトの名無しさん
2010/10/19(火) 20:00:42破壊的変更そのものを望むのってどうなんだよw
0397デフォルトの名無しさん
2010/10/19(火) 20:21:330398デフォルトの名無しさん
2010/10/19(火) 20:38:38こんな言語他には無いぜ
0399デフォルトの名無しさん
2010/10/19(火) 20:39:120400デフォルトの名無しさん
2010/10/19(火) 20:48:040401デフォルトの名無しさん
2010/10/19(火) 21:30:410402デフォルトの名無しさん
2010/10/19(火) 22:36:470403デフォルトの名無しさん
2010/10/20(水) 02:07:040404デフォルトの名無しさん
2010/10/20(水) 08:27:220405デフォルトの名無しさん
2010/10/20(水) 08:57:460406デフォルトの名無しさん
2010/10/20(水) 13:00:350407デフォルトの名無しさん
2010/10/20(水) 13:09:210408デフォルトの名無しさん
2010/10/20(水) 16:07:47Dは乗り捨てられるということか
0409デフォルトの名無しさん
2010/10/20(水) 18:44:570410デフォルトの名無しさん
2010/10/20(水) 19:27:360411デフォルトの名無しさん
2010/10/20(水) 19:53:44ttp://anond.hatelabo.jp/20100727224744
0412デフォルトの名無しさん
2010/10/20(水) 20:54:16何これ全ての欠点に目を瞑って異様に褒めてるように見える
0413デフォルトの名無しさん
2010/10/20(水) 21:06:09void main() {
auto doc = new Document(new Tag("a"));
doc.tag.attr["b"] = `<&>"`;
std.stdio.writeln(std.string.join(doc.pretty, ""));
}
出力:
<a b="<&>""></a>
どう見ても属性値のencodeに失敗しています
本当にありがとうございました
というかstd.xmlって全然使われてないのな
0414デフォルトの名無しさん
2010/10/20(水) 23:26:38import std.stdio;
void main() {
auto a = [cast(short)1, 2, 3];
writefln("%s", typeid(typeof(a))); //NG ---> int[]
auto b = [cast(byte)1, 2, 3];
writefln("%s", typeid(typeof(b))); //NG ---> int[]
auto c = [cast(long)1, 2, 3];
writefln("%s", typeid(typeof(c))); //OK ---> long[]
}
仕様には
> 配列リテラル全体の型としては、先頭要素の型が採用されます。
とあるが、byte・shortなどでは、int[]になってしまう
D1では問題なし http://codepad.org/bVmm4xLS
0415デフォルトの名無しさん
2010/10/20(水) 23:33:53そりゃ消えると言われてるモジュールをわざわざ使う人は少ないだろう
0416デフォルトの名無しさん
2010/10/21(木) 00:12:15実は内部でdecode仕様としています。
つまり、`<&>"`と書いても<&>"ってなる。
>>415
消えるとわかっているんだから、使えば破壊的変更でハッピーになれるんだぜ…?
0417416
2010/10/21(木) 00:14:21`<&>"`
こう、かな?
0418デフォルトの名無しさん
2010/10/21(木) 00:37:400419デフォルトの名無しさん
2010/10/21(木) 10:09:28配列や連想配列リテラルの型は、先頭要素の型ではなく、 全要素に ?: した型を使うようになりました。
0420デフォルトの名無しさん
2010/10/21(木) 11:33:11Hello World!から細かく解説してるので入門書的な扱いかと思ったんだが、次のページでいきなりコンパイラが型を解釈しやすいように書けとか言い出したのでいつものDだと安心した。
0421デフォルトの名無しさん
2010/10/21(木) 20:42:280422デフォルトの名無しさん
2010/10/22(金) 00:02:57ありがとう理解しました
言語仕様書へは反映されているとは限らないから、更新履歴にも目を通す必要あったんですね
今から全部読んでくる
0423デフォルトの名無しさん
2010/10/22(金) 00:12:10んん?
0424デフォルトの名無しさん
2010/10/22(金) 00:31:440425デフォルトの名無しさん
2010/10/23(土) 09:21:29ソース頒布する時にライセンス消しちゃ駄目だろうけど。必須なのはBSDだよね。
0426デフォルトの名無しさん
2010/10/23(土) 13:18:40ありがとう
0427デフォルトの名無しさん
2010/10/23(土) 14:32:540428デフォルトの名無しさん
2010/10/23(土) 15:23:46そんなことよりopApply使ってマルチタスクする方法考えようぜ!
0429デフォルトの名無しさん
2010/10/24(日) 12:45:42戻り値を省略したdelegateリテラルの戻り値の型が化けて
エラーメッセージがややこしいことになるのは何とかならないのかな
0430デフォルトの名無しさん
2010/10/27(水) 19:28:210431デフォルトの名無しさん
2010/10/27(水) 22:42:360432デフォルトの名無しさん
2010/10/28(木) 12:17:17単に cast(char*)しているだけのソースがあるんだけど、
これtoStringz()しないとダメなままだよね?
0433デフォルトの名無しさん
2010/10/28(木) 13:05:34その他は、toStringz()などでnull終端にしないとマズイ
0434デフォルトの名無しさん
2010/10/28(木) 13:27:10おお、あった。ありがとうございます。
0435デフォルトの名無しさん
2010/10/28(木) 13:31:20基本的にはキャストだけでおkってシーンはあんまないはず。
0436デフォルトの名無しさん
2010/10/28(木) 14:20:21にゃる。ありがと。
mysqlドライバが・・・
0437デフォルトの名無しさん
2010/10/29(金) 22:02:05なんのバグか分からないので分解してみたんですが、
int l = parent.pages.length;//3
int sw = TabPage.s_width;
int bw = TabPage.btn_wigth;
int k = sw/bw;//5
int p=3, n=5;//リテラルでやってみる
auto r = l/p/n;//落ちない
auto r2 = l/k;//落ちる
なんか変なことしてますか?
0438デフォルトの名無しさん
2010/10/29(金) 22:24:23int br = pages.length / this.width / TabPage.btn_wigth;
int row;
foreach(i, page; Tab.pages ) {
msgBox(format("%d %d %d ",pages.length, this.width, TabPage.btn_wigth));
if (!i % br) {
msgBox("!");
++row;
}
msgBox("!");
page.btn.bounds = Rect(TabPage.btn_wigth*i, TabPage.btn_hegiht*i,TabPage.btn_wigth, TabPage.btn_hegiht);
}
です。msgBoxで表示されてるのは 3 520 100の数値なんだけどなぁ
0439デフォルトの名無しさん
2010/10/29(金) 22:30:25すべては自分の勘違いですた。
0440デフォルトの名無しさん
2010/10/30(土) 14:52:350441デフォルトの名無しさん
2010/10/30(土) 15:22:150442デフォルトの名無しさん
2010/10/30(土) 15:42:430443デフォルトの名無しさん
2010/10/30(土) 16:21:54困る
0444デフォルトの名無しさん
2010/10/31(日) 03:02:12const string str = "hello world"; // constはずすと通る。
std.algorithm.startsWith( str, "hell" ); // 引数から推論できないよエラー
ちくしょー
0445デフォルトの名無しさん
2010/10/31(日) 05:52:020446デフォルトの名無しさん
2010/10/31(日) 09:00:190447デフォルトの名無しさん
2010/10/31(日) 12:22:060448デフォルトの名無しさん
2010/10/31(日) 12:28:55既知のバグ
http://d.puremagic.com/issues/show_bug.cgi?id=5134
0449デフォルトの名無しさん
2010/10/31(日) 15:05:38C形式の関数ポインタの宣言が禁止されたため。
0450デフォルトの名無しさん
2010/10/31(日) 20:20:52dmd2.047
0451デフォルトの名無しさん
2010/10/31(日) 20:32:50必ずじゃないのがタチ悪い
DFLのforum見たらすでに報告されてたんだけど
その前辺りからtrunkの動きが無いんだよな
0452デフォルトの名無しさん
2010/10/31(日) 20:50:120453デフォルトの名無しさん
2010/10/31(日) 20:54:540454デフォルトの名無しさん
2010/10/31(日) 22:24:320455デフォルトの名無しさん
2010/10/31(日) 23:53:25なんで Application.autoCollect = false; にする必要あるんだろうか
CG走ると困る作りになってるのかな
0456デフォルトの名無しさん
2010/11/01(月) 08:35:06以前にdropしたファイルが、消滅したことがある
特にファイルを処理するコードはなかったんだけど、削除されていた
テストするときは、ダミーファイル作ってやったほうがいいよ
0457デフォルトの名無しさん
2010/11/01(月) 08:55:000458デフォルトの名無しさん
2010/11/01(月) 12:05:170459デフォルトの名無しさん
2010/11/01(月) 12:55:27>>449が指摘している変更で、
例えばcのqsortをインポートする場合とかはどう書かないといけなくなったの?
> void qsort(void *base, uint nelems, uint elemsize, int (*compare)(void *elem1, void *elem2));
0460デフォルトの名無しさん
2010/11/01(月) 14:03:09void qsort(void *base, uint nelems, uint elemsize, int function(void *elem1, void *elem2));
0461デフォルトの名無しさん
2010/11/01(月) 14:06:33http://www.kmonos.net/alang/d/2.0/expression.html#FunctionLiteral
0462デフォルトの名無しさん
2010/11/01(月) 14:21:47通った。サンクス。
mysqlドライバぇ・・・
0463デフォルトの名無しさん
2010/11/01(月) 14:25:38ありがと。
functionて使ったことなくて
> int function (*compare)(void *elem1, void *elem2);
こんな書き方で怒られた後の質問だったのです('A`)
0464デフォルトの名無しさん
2010/11/01(月) 15:18:460465デフォルトの名無しさん
2010/11/01(月) 16:33:35今はdelegateだとthis(コンテキスト)ポインタが変数にも引数にも入ってるはず
0466デフォルトの名無しさん
2010/11/01(月) 20:03:370467デフォルトの名無しさん
2010/11/01(月) 20:31:010468デフォルトの名無しさん
2010/11/01(月) 22:38:35ってもじかしてMixin自体がないってことですか?
0469デフォルトの名無しさん
2010/11/01(月) 22:47:550470デフォルトの名無しさん
2010/11/02(火) 00:17:19遅延評価の式に使われている変数のうち一部だけをその場で評価したいのですが何か良い方法はないでしょうか。
たとえばfuncの引数が遅延評価されるものだとして、
func(a * b);
と与えた時に、aは遅延評価してほしいが、bはfuncを呼びだした時の値を使いたい。
といった状況です。
0471デフォルトの名無しさん
2010/11/02(火) 00:22:30bを普通のローカル変数にして中身はその文に到達するまでに計算しとくのではだめなのか?
0472デフォルトの名無しさん
2010/11/02(火) 00:29:43void a(lazy int a, lazy int b) {
func(a * b);
}
ということなら
void a(lazy int a, lazy int b) {
int c = b;
func(a * c);
}
で済むと思うけど
0473デフォルトの名無しさん
2010/11/02(火) 00:50:41class test
{
double delegate() a;
void b(lazy double arg)
{
a = {return arg();};
}
}
というクラス作っといて
test[] t;
double f = 1.;
for(int i=0;i<t.length;i++)
{
t[i].b(f + i);
} //この時点でi=t.lengthになる
みたいにして
のちのち
for(int i=0;i<t.length;i++) //先のiとは別物
{
t[i].a();
}
と書くと、iが遅延評価されて、
t[i].a() == 1.+t.length になってしまいます。
そこを、t[i].a() == 1. + i
という形にしたいのです(つまりfは遅延評価されるが、iはその場で値にされ代入)
0474デフォルトの名無しさん
2010/11/02(火) 00:58:180475デフォルトの名無しさん
2010/11/02(火) 08:47:070476デフォルトの名無しさん
2010/11/02(火) 12:56:27t[i].b(f+i);の代わりに
t[i].a = (int j){return{return f+j;};}(i);を使えばよろしい
0477デフォルトの名無しさん
2010/11/02(火) 17:53:38ってなんか、こう、C言語のマクロ的に完結に書きたいですね('A`)
0478デフォルトの名無しさん
2010/11/02(火) 17:56:310479デフォルトの名無しさん
2010/11/03(水) 00:08:49それってCompositeのこと?
0480デフォルトの名無しさん
2010/11/04(木) 23:48:41よしお題でも・・
お題:mixinでC#のstring.Formatを作ろう
int n = 10;
string s = "test";
assert(DFormat("int→{0}、string→{1}", n, s) == "int→10、string→test");
0481デフォルトの名無しさん
2010/11/05(金) 00:53:13めんどくせ。
真面目にやるなら、Phobosのformat()をラップする。
0482デフォルトの名無しさん
2010/11/05(金) 00:57:52例外処理の全体テストって、どうやれば綺麗な物になるだろう?
知恵欲しいお。
0483デフォルトの名無しさん
2010/11/05(金) 03:15:140484デフォルトの名無しさん
2010/11/05(金) 03:27:48昔作ったなあ
でも今でも動くかどうか
0485デフォルトの名無しさん
2010/11/05(金) 06:43:004日以上はかなり厳しい
0486sage
2010/11/06(土) 18:55:07The Case for D
と
TDPL - Concurrency in D Programming Language
の和訳を読んでるけど、とても面白いね。
Dの言語機能が何をしたくて実装されたかが理解できて
D言語がさらに面白くなりました。
訳した人、乙です。
0487デフォルトの名無しさん
2010/11/06(土) 18:55:590488デフォルトの名無しさん
2010/11/06(土) 23:23:150489デフォルトの名無しさん
2010/11/06(土) 23:28:300490デフォルトの名無しさん
2010/11/07(日) 00:25:58D1なんてなかった
0491デフォルトの名無しさん
2010/11/07(日) 01:47:35今見た
俺が昔Cでゲーム作るときに使ってたアルゴリズムよりましだったorz
0492デフォルトの名無しさん
2010/11/07(日) 03:18:310493デフォルトの名無しさん
2010/11/07(日) 06:04:45mixinで.hファイルをパースしてDにポーティングしよう
0494デフォルトの名無しさん
2010/11/07(日) 11:51:06ちゃんと書きやがれ。
0495デフォルトの名無しさん
2010/11/07(日) 13:10:380496デフォルトの名無しさん
2010/11/07(日) 13:39:000497デフォルトの名無しさん
2010/11/07(日) 14:22:02ここのWin32APIのポーティングなんだけど
IUnknown継承したインターフェイスをCoCreateInstanceして
QueryInterfaceすると実行時に落ちる
調べたら継承先インターフェイスでQueryInterface、AddRef、Releaseを定義してあると
IUnknownの実装がIShellFolderに受け継がれないっぽい。
3つの定義コメントアウトしたらちゃんと動いた。
これってD2のバグ?やり方がおかしいだけ?
それともPhobosのIUnknown使って全部書き直せって事?
×interface IShellFolder : public IUnknown{
HRESULT QueryInterface(REFIID,PVOID*);
ULONG AddRef();
ULONG Release();
HRESULT ParseDisplayName(HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG);
HRESULT EnumObjects(HWND,DWORD,LPENUMIDLIST*);
:
}
○interface IShellFolder : public IUnknown{
//HRESULT QueryInterface(REFIID,PVOID*);
//ULONG AddRef();
//ULONG Release();
HRESULT ParseDisplayName(HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG);
HRESULT EnumObjects(HWND,DWORD,LPENUMIDLIST*);
:
}
0498デフォルトの名無しさん
2010/11/07(日) 14:34:540499デフォルトの名無しさん
2010/11/07(日) 15:45:48参照カウント増減とインスタンス返す部分だと思うけどvtblがおかしいのかIxxxxx.QueryInterfaceしても
IUnknown.QueryInterfaceが呼べてない感じがした
>>497 みたいにコメントアウトするとIUnknown.QueryInterfaceがちゃんと呼ばれるという具合
0500デフォルトの名無しさん
2010/11/07(日) 15:51:31原因分らない可能性も十分あるけどwww
0501デフォルトの名無しさん
2010/11/07(日) 16:43:33interface IUnknown
{
HRESULT QueryInterface(REFIID riid, LPVOID* ppvObject);
ULONG AddRef();
ULONG Release();
}
alias IUnknown LPUNKNOWN;
interface IClassFactory : IUnknown {
HRESULT CreateInstance(IUnknown UnkOuter, IID* riid, void** pvObject);
HRESULT LockServer(BOOL fLock);
}
alias IClassFactory LPCLASSFACTORY;
}
実装は派生Interfaceの実装毎にDLLの中にあるのかな(shell32.dllとか・・?)
仕様には呼出規約も継承されるって書いてあるけど、まさかインターフェイスの場合は
オーバーライドすると継承されない不具合とかが潜んでてDLLのQueryInterface呼出時に死んでるとか・・・?
0502デフォルトの名無しさん
2010/11/07(日) 17:31:35HRESULT QueryInterface(REFIID,LPVOID*);
って、型になってるのに、
IShellFolderでは、
HRESULT QueryInterface(REFIID,PVOID*);
って、型になってるんだろう?
正直これが原因のような気もする。
そもそもIUnknownで、
HRESULT QueryInterface(REFIID riid, LPVOID* ppvObject);
ULONG AddRef();
ULONG Release();
がリストされてるんだから、IShellFolderで改めてリストする必要は無いよねえ・・・
0503デフォルトの名無しさん
2010/11/07(日) 17:58:09そしてコメントアウトすると上手く行く
>>502 さんの言うようにポーティングが不要な事してるっていうのがまずあるけど
それで落ちるのが理由が全然わからない・・
0504デフォルトの名無しさん
2010/11/07(日) 18:32:35http://codepad.org/mt4iUfnQ
Error: function main.B.foo of type void() overrides but is not covariant with main.A.foo of type voidWindows ()
って、怒られた。 ・・・あれ?
0505デフォルトの名無しさん
2010/11/07(日) 18:56:270506デフォルトの名無しさん
2010/11/08(月) 23:33:13ありますか?
class における .tupleof みたいなことが出来たら・・・。
0507デフォルトの名無しさん
2010/11/08(月) 23:50:34頑張って一つ一つグローバル変数かどうか識別するとか?
0508デフォルトの名無しさん
2010/11/09(火) 00:07:57調べてみましたが、これはクラスの型を指定しないといけないみたいですね・・・。
あ、調べたいソースファイル自身をインポートして
グローバル変数部分の文字列抜き出すようなほげほげすれば
あるいは・・・!?
ムズソウ。。。
0509デフォルトの名無しさん
2010/11/09(火) 00:37:47どっかにいいサンプルないすか?
0510デフォルトの名無しさん
2010/11/09(火) 02:22:28mixinでE4Xをパースし(ry
0511デフォルトの名無しさん
2010/11/09(火) 09:11:35{
string str;
long _int;
(略
}
enum TYPE : byte {
STRING,
INT,
(略
}
class Value {
TYPE type;
Value value;
void val(string val)
in {
assert(type != TYPE.STRING);
} body {
value.str = val;
}
void val(long _int)
in {
assert(type != TYPE.INT);
} body {
value._int = _int;
}
(略
みたいなコードを何か一括纏められる方法ってDにありますかね?
0512デフォルトの名無しさん
2010/11/09(火) 11:42:440513デフォルトの名無しさん
2010/11/09(火) 12:17:27コンパイラスイッチの -vtls じゃ不十分だろうか?
0514デフォルトの名無しさん
2010/11/09(火) 12:18:43モジュール機能じゃ不十分か?
0515デフォルトの名無しさん
2010/11/09(火) 21:09:24所でモジュール名が同じだと駄目なんでしょうか?パス(名前空間?)は違うんですが。
0516デフォルトの名無しさん
2010/11/09(火) 21:10:25ありがとうございます。こんなのあったんですね。
今回調べようと思ってた理由は、Derelict2 を使っていたら
アクセスバイオレーションで落ちてしまい、恐らく
ロードしていない関数(へのポインタ、これはグローバル変数)が
あるだろうと思ってそのポインタ値を出力してどれが null かを
調べたかったのでした。
実はその変数自体がわざわざ __gshared: 指定されており、
スレッドローカルではなかったので、そのオプションは使えなさそうです・・・。
結局ステップ実行して原因を突き止めました。
ともあれ、情報をありがとうございました。
0517515
2010/11/09(火) 21:19:450518デフォルトの名無しさん
2010/11/09(火) 21:59:00メジャーか。メジャーに躍り出るのか
0519デフォルトの名無しさん
2010/11/09(火) 22:56:280520デフォルトの名無しさん
2010/11/09(火) 23:25:58数値計算用途で考えているんだけど、SciD使っている人いたらレビュー求む。
0521デフォルトの名無しさん
2010/11/10(水) 00:33:05と言うかD1の中期くらいで止まってるから変わりすぎてて笑う
0522デフォルトの名無しさん
2010/11/10(水) 00:58:100523デフォルトの名無しさん
2010/11/10(水) 02:06:35まあでも、C++に去っていく人は少ないだろう。
0524デフォルトの名無しさん
2010/11/10(水) 02:28:470525デフォルトの名無しさん
2010/11/10(水) 06:38:02アプリ作れ
そして俺のように破滅的状況を味わうのだ
0526デフォルトの名無しさん
2010/11/10(水) 06:48:010527デフォルトの名無しさん
2010/11/10(水) 06:57:570528デフォルトの名無しさん
2010/11/10(水) 07:11:05メジャーにはなって欲しいけど。
0529デフォルトの名無しさん
2010/11/10(水) 09:37:040530デフォルトの名無しさん
2010/11/10(水) 11:16:33使えるような気がするのは俺だけか。
0531デフォルトの名無しさん
2010/11/10(水) 12:26:340532デフォルトの名無しさん
2010/11/10(水) 12:57:16無料サーバーって言えば良かった
0533デフォルトの名無しさん
2010/11/10(水) 17:46:03Error 42: Symbol Undefined _D5win326windef13__readfsdwordFkZk
って奴がいきなり出始めました。
それまでは動いてたので何が悪いのか分かりません。どういう風に解決すればいいんでしょう?
0534デフォルトの名無しさん
2010/11/10(水) 18:25:03まったく何もしてないってことはないだろう
…いや、Dならありえるな
0535デフォルトの名無しさん
2010/11/10(水) 18:40:431. dmdをインストールしなおす(解凍してパスをとおす。必要ならフォルダの構成を変更する)
2. sc.iniを確認して、Phobosとdruntimeにパスが通っていることを確認する
3. phobos.libが最新でsc.iniで見れるlibフォルダに入っているか確認する
4. win32.libをgnu-makeで作成し、libフォルダに入れる。コンパイル出来ないときは、そのへんに落ちているパッチを当てるか自分で修正する。
5. sc.iniを編集するとかして、win32にもパスをとおす
6. プログラムの内部に pragma(lib, "win32"); って書くか、コンパイル時またはリンク時にwin32.libのリンクを指定する
0536デフォルトの名無しさん
2010/11/11(木) 00:40:500537デフォルトの名無しさん
2010/11/11(木) 01:15:16pragma(msg, "HOGE".tolower ); // cannot evaluate at compile time
こうゆうところですねわかります >>536
※ 既知バグだった。
0538デフォルトの名無しさん
2010/11/11(木) 04:06:28まさかコンパイルしてないわけじゃないよな
俺のとこじゃ普通に動いたぞ
0539デフォルトの名無しさん
2010/11/11(木) 04:12:12無料なら乗り換えるよ!
0540デフォルトの名無しさん
2010/11/11(木) 05:31:500541デフォルトの名無しさん
2010/11/11(木) 17:22:23今ryuquoだけど閉鎖してkuronowishに変わる
んで、どっちも使えるっぽい
鯖調べしてた時に他にもいくつか使えるっぽいとこあったぞ
0542デフォルトの名無しさん
2010/11/11(木) 21:13:590543デフォルトの名無しさん
2010/11/11(木) 22:04:22http://dsource.org/projects/fastcgi4d/wiki
0544デフォルトの名無しさん
2010/11/11(木) 22:19:40あんまり関係無いどころか、鯖選びのハードル上がっちまうじゃねーかwww
0545デフォルトの名無しさん
2010/11/11(木) 22:35:29一つ上のフォルダを指定したいんだけど、うまくいかない。。。
0546デフォルトの名無しさん
2010/11/11(木) 23:15:30-I..
じゃ駄目なの?
0547デフォルトの名無しさん
2010/11/12(金) 00:30:41こんな感じでやってるんだけどうまく行かないんだよね。
最初は \ ではなく / でやってみたりもしたけど。
相対指定しなくて良い場所にフォルダ置いてみるとうまく行く。
0548デフォルトの名無しさん
2010/11/12(金) 00:33:530549デフォルトの名無しさん
2010/11/12(金) 03:25:22スペースを含むパスには対応してなかったはず。
あとたしか日本語入りのパスもだめ。
0550549
2010/11/12(金) 03:39:34今試したらどっちもいけたわ。
ところでもしPowerShell使ってるならオプションを'-I..'とかって括らないとだめみたい
0551デフォルトの名無しさん
2010/11/12(金) 07:54:05こっちは無理だ・・・。'' で括っても見たけど。。。
ちなみに bud を使ってて、
Bud 用レスポンスファイルの中に
-I..\Derelict2\DerelictGL
ってな感じに書いてます。
レスポンスファイルに書いてるってのも良くないのかなぁ。
0552デフォルトの名無しさん
2010/11/12(金) 07:58:11もうちょい調べてみます。どうもありがとう。
0553デフォルトの名無しさん
2010/11/12(金) 08:45:42OPTLINK (R) for Win32 Release 8.00.2
Copyright (C) Digital Mars 1989-2009 All
http://www.digitalmars.com/ctg/optlink.ht
C:\Documents.obj
Error 2: File Not Found C:\Documents.obj
やっぱりフォルダ名のスペースがまずい気が・・・。
0554デフォルトの名無しさん
2010/11/12(金) 18:50:030555デフォルトの名無しさん
2010/11/12(金) 19:13:39auto a = [2,1,4,3];
a.sort;
writeln(a);
}
簡単に出来る方法も何も、sortってプロパティがそのものじゃね?
0556デフォルトの名無しさん
2010/11/12(金) 19:16:44条件書き忘れてました。
3番目のデータを先頭に持っていくとか、そういう奴です。
ところで配列の要素の削除って出来ないんでしょうか?
探しても見つからないんですが・・・
0557デフォルトの名無しさん
2010/11/12(金) 19:41:07auto result = [array[n]] ~ array[0 .. n] ~ array[n+1 .. $];
まあサクッとできてるほうかな・・?
0558デフォルトの名無しさん
2010/11/12(金) 20:16:55ありがとうございます。動きました。
が、さらに誤解を与えてすいません><
n番目の奴をm番目に移動とか・・・です。
0559デフォルトの名無しさん
2010/11/12(金) 20:55:500560デフォルトの名無しさん
2010/11/12(金) 22:56:53そういう用途に配列を使うのもどうかと思うよ
通常はListとかのデータ構造を使うと思うよ
DだとSListとかあるけど英語の資料しかなくて使い方わからないよ
0561デフォルトの名無しさん
2010/11/12(金) 23:08:110562デフォルトの名無しさん
2010/11/12(金) 23:17:01Arrayが第1引数になる関数はArrayのメンバ関数のように扱えますので
そちらをお使い下さいってことだろうね。
0563デフォルトの名無しさん
2010/11/12(金) 23:49:300564デフォルトの名無しさん
2010/11/12(金) 23:50:54sort自体はalgorithmにもあるけど、sortだけ組み込みなのが許せないってことだごめん
0565デフォルトの名無しさん
2010/11/12(金) 23:56:260566デフォルトの名無しさん
2010/11/13(土) 00:18:200567デフォルトの名無しさん
2010/11/13(土) 01:27:360568デフォルトの名無しさん
2010/11/13(土) 01:52:44あるとしたらそれは世界が非常時の時だろう
0569デフォルトの名無しさん
2010/11/13(土) 02:02:13$ dmd -run christ.d
Segmentation fault
$ omg
omg: command not found
0570デフォルトの名無しさん
2010/11/13(土) 02:42:510571デフォルトの名無しさん
2010/11/13(土) 03:16:060572デフォルトの名無しさん
2010/11/13(土) 03:17:00auto mio = new けいおん!(ポロリもあるよ);
0573デフォルトの名無しさん
2010/11/13(土) 03:22:44Pythonでいいじゃんって思った
0574デフォルトの名無しさん
2010/11/13(土) 10:15:34待て,それはbearophileの罠だ
0575デフォルトの名無しさん
2010/11/13(土) 10:58:460576デフォルトの名無しさん
2010/11/13(土) 11:10:20C#でいいじゃんって思った
0577デフォルトの名無しさん
2010/11/13(土) 11:27:26listdirだとディレクトリ内全部のファイルになっちゃう。
0578デフォルトの名無しさん
2010/11/13(土) 12:55:17配列の要領で
path.isdir;
みたいに書けるからいらなくね?ってことか?
0579デフォルトの名無しさん
2010/11/13(土) 14:44:35ついででなんですが、EclipseにC#の#Regionみたいなものあります?
0580デフォルトの名無しさん
2010/11/13(土) 14:44:58何気に日本語シンボル通るのな
0581デフォルトの名無しさん
2010/11/13(土) 14:45:590582デフォルトの名無しさん
2010/11/13(土) 15:04:11Dならさくっと書けるのに・・・、と思ってまた戻ってくる。
0583デフォルトの名無しさん
2010/11/13(土) 16:10:02C#とかIDE使ってても発狂しそうになるわ
0584デフォルトの名無しさん
2010/11/13(土) 17:21:46現状文字列の扱いにもっとも長けた言語の一つではないかと言う気がする
0585デフォルトの名無しさん
2010/11/14(日) 04:08:44Error: cannot implicitly convert expression (shfi.hIcon) of type HANDLE to HANDLE
Error: function etc.iconFromFile no return exp; or assert(0); at end of function
これってどう直せばいいんでしょうか・・・
0586デフォルトの名無しさん
2010/11/14(日) 06:11:10ちゃんと完成してライブラリが増えてきたら十分Cに置き換えられると思う
ちゃんと完成してライブラリが増えてきたら・・・
0587デフォルトの名無しさん
2010/11/14(日) 06:12:250588デフォルトの名無しさん
2010/11/14(日) 06:15:23二十年後かもしれないけど
がんばってね
0589デフォルトの名無しさん
2010/11/14(日) 06:41:12D言語に関して確実に言えることは、待っていてもだれもやってくれないということだ。
もし何かライブラリがほしいと思ったら、自分で作るか、
少なくともどんなのがほしいかくらいは声を大にして言っておかないと絶対に作られない。
0590デフォルトの名無しさん
2010/11/14(日) 07:14:09作ろうにも作れないだろう
0591デフォルトの名無しさん
2010/11/14(日) 08:13:120592デフォルトの名無しさん
2010/11/14(日) 08:52:18破壊的変更を承知でライブラリつくっては壊れてそれを直し
…ってサイクルを続けるしか無いんじゃない?
0593デフォルトの名無しさん
2010/11/14(日) 09:23:37他に追加したい機能なんてあるのだろうか?
0594デフォルトの名無しさん
2010/11/14(日) 09:27:45D言語の更新の度にパーサも更新ってどうよ?
0595デフォルトの名無しさん
2010/11/14(日) 09:41:340596デフォルトの名無しさん
2010/11/14(日) 09:44:580597デフォルトの名無しさん
2010/11/14(日) 10:32:38JVMをシームレスに使えるインターフェースがあれば良いかもなー
0598デフォルトの名無しさん
2010/11/14(日) 11:22:490599デフォルトの名無しさん
2010/11/14(日) 14:18:40きっと JNI 経由で呼べるよ
0600デフォルトの名無しさん
2010/11/15(月) 02:17:55JNIとか茨の道じゃないか
0601デフォルトの名無しさん
2010/11/15(月) 15:22:18Dって強力なんでしょ?
0602デフォルトの名無しさん
2010/11/15(月) 15:54:40これからは有効に使おうと思います。
0603デフォルトの名無しさん
2010/11/15(月) 16:23:48struct Test { int hoge; }
void main(){
Test foo;
string hoge = "string";
writeln(hoge);// string
with(foo)
writeln(hoge);// これはどうなる?
}
0604デフォルトの名無しさん
2010/11/15(月) 17:30:28D2ではコンパイルエラーになるようです。
0605デフォルトの名無しさん
2010/11/15(月) 18:37:51string ip = "192.168.0.1";
string uri = "http://" = ip ~ "/hoge.html";
コンパイルエラーになってくれないのね(´・ω・`)
0606デフォルトの名無しさん
2010/11/15(月) 19:33:20スタイルさえ確立すればPythonでもDでも同じ。
0607デフォルトの名無しさん
2010/11/15(月) 19:38:16リテラルに代入しようとしてる…?
0608デフォルトの名無しさん
2010/11/15(月) 19:41:040609デフォルトの名無しさん
2010/11/15(月) 20:00:25速さが違う
>>586
組み込み機器CPUがマルチコア過ぎてC言語じゃ対応できない未来のための
D言語だと思ってる。対抗馬のGoは今どうなってるんだろう。
0610デフォルトの名無しさん
2010/11/15(月) 23:22:01Goはなかった
0611デフォルトの名無しさん
2010/11/15(月) 23:26:170612デフォルトの名無しさん
2010/11/15(月) 23:43:060613デフォルトの名無しさん
2010/11/16(火) 00:39:51ほう
codepadでテストするもんじゃないな
0614デフォルトの名無しさん
2010/11/16(火) 01:04:41現状、並列処理用の拡張やライブラリの充実度ってCとDじゃ
比較にならないと思うんだけど、どのぐらい未来の話?
0615デフォルトの名無しさん
2010/11/16(火) 03:40:29読んでて確かに面白かった。
0616デフォルトの名無しさん
2010/11/16(火) 12:56:510617デフォルトの名無しさん
2010/11/16(火) 14:18:27マルチコアで全く関係の無い別々のスレッドを走らせるなら間違ってないが
0618デフォルトの名無しさん
2010/11/16(火) 14:39:36ttp://dusers.dip.jp/modules/wiki/?Articles/TDPL%20-%20Concurrency%20in%20D
0619デフォルトの名無しさん
2010/11/16(火) 18:18:16まあ、どっちにしても出来るけど。(ドキュメントに嘘書いて無ければ)
0620デフォルトの名無しさん
2010/11/16(火) 19:45:090621デフォルトの名無しさん
2010/11/16(火) 19:52:20そろそろ俺も本気出す。
0622615
2010/11/16(火) 20:34:35並列と並行、確かにごっちゃにしてた。
調べてみたら、次の説明が。
Parallelは、日本語訳は並列。Instructionレベルでの同時多重処理を実現するのための技術。
Concurrentは、日本語訳は並行。Taskレベルでの同時多重処理を実現するための技術。
調べてみよっと。どうもありがとう!
0623デフォルトの名無しさん
2010/11/16(火) 20:39:00じゃあ、俺の見たスレッドの作成が出来る、って記述は幻だったのか。
0624デフォルトの名無しさん
2010/11/16(火) 21:03:37マルチコア使って実際に並列処理してくれるかどうかは別の話だろ。
処理を並列化できることを示せるような方法は今のところなかったと思うし。
配列演算使うと並列で処理してくれる「かも」とは書いてあるが。
0625デフォルトの名無しさん
2010/11/16(火) 22:49:40何でスレッドは並列処理しないと思ってるのか。
せっかく独立して動かせるのに。
0626デフォルトの名無しさん
2010/11/16(火) 23:12:140627デフォルトの名無しさん
2010/11/17(水) 04:43:59マルチコアでやってくれることを期待するものなの??
0628デフォルトの名無しさん
2010/11/17(水) 08:59:43自動並列化っていうのはあるけど、コンパイラ次第。
まあ、今はあまり期待出来ないが。
0629デフォルトの名無しさん
2010/11/17(水) 22:44:06持たせる場合、解放処理が必須になると思うんだけどそういう場合どうやってしてる?
デストラクタの処理順は不定だから★のデストラクタで☆の持ってるリソースを解放しようとすると
アプリケーション終了時に☆の方が先に解体&メモリ解放されてエラー堕ちしちゃうんだ・・・
0630デフォルトの名無しさん
2010/11/17(水) 22:52:56リソース管理は基本手動かscope
0631デフォルトの名無しさん
2010/11/17(水) 22:58:47やってやれないことはない
0632デフォルトの名無しさん
2010/11/17(水) 23:37:09Dィィィィ オマエェェェェェェ
しくしく;
0633デフォルトの名無しさん
2010/11/18(木) 02:09:16みたいな関数のポインタへのキャストはどう書くのでしょうか?
0634デフォルトの名無しさん
2010/11/18(木) 02:13:190635デフォルトの名無しさん
2010/11/18(木) 02:28:040636デフォルトの名無しさん
2010/11/18(木) 05:19:29他の言語でその辺上手くやってる言語ってあるっけ?
0637633
2010/11/18(木) 08:31:42>>634
int function(int, int) phoge = cast(int function(int, int))GetProcAddress(hLibrary, "hoge");
でコンパイルは成功して実行(a = (*phoge)(3, 5); みたいな)も出来るようになったのですが
引数の値がうまく渡せないみたいです
(DLL 側でみると 1番目の引数は正しい値になっているのに 2番目の引数の値が出鱈目です)
戻り値はなんとか間違った値で返っているみたいですがスタック壊してるっぽいですよね
>>635
auto phoge = GetProcAddress(hLibrary, "hoge");
ってやると
Error: expected 0 arguments, not 2 for non-variadic function type intWindows ()
みたいなエラーが出てしまうんです
ちなみに DLL の方は __cdecl で作っています
dmd 2.050 を使っています
0638デフォルトの名無しさん
2010/11/18(木) 08:35:30auto phoge = cast(int function(int, int))GetProcAddress(hLibrary, "hoge");
だとコンパイル通りましたが
やはり実行時に 2番目以降の引数がおかしくなります
D から DLL 呼び出すのは無理なんでしょうか?
0639デフォルトの名無しさん
2010/11/18(木) 08:55:40auto f = cast(extern(C) int function(int, int))GetProcAddresss(..);
この位置のexternきもいなっていうかこんなことできるの?
0640デフォルトの名無しさん
2010/11/18(木) 09:00:45コンパイルエラーになります
0641633
2010/11/18(木) 09:04:13LoadLibrary じゃなくて
extern (C)
{
export int hoge(int, int);
}
を書いて静的リンクしてやればうまく動くことは確認しました
GetProcAddress で取得した関数の型変換で失敗しているみたいです
(出来れば LoadLibrary で正常に動作させたいです)
0642デフォルトの名無しさん
2010/11/18(木) 09:17:58extern(C) { int function(int, int) hoge; }
...
hoge = GetProcAddress(..);
0643633
2010/11/18(木) 09:32:37ありがとうございました
0644デフォルトの名無しさん
2010/11/18(木) 09:54:250645デフォルトの名無しさん
2010/11/18(木) 17:28:53「☆がデストラクタで自分が死ぬときに自分のリソースを解放する」
としてて困ったことがないんだけど、☆のさらに外の★がリソースの面倒
みる必要があるのってどういう状態?
0646デフォルトの名無しさん
2010/11/18(木) 17:52:020647デフォルトの名無しさん
2010/11/18(木) 18:20:520648デフォルトの名無しさん
2010/11/18(木) 19:44:39extern(C) { alias int function(int, int) HOGE; }
auto hoge = cast(HOGE) GetProcAddress(..);
でも行けた気がするな
0649デフォルトの名無しさん
2010/11/18(木) 19:50:070650デフォルトの名無しさん
2010/11/18(木) 21:39:48例えばHWNDとWindowクラスを関連付けるmapオブジェクトをWindowクラスが持っている状況で
WindowクラスがWM_DESTROYを受けたときmapオブジェクトから関連付けを削除する仕組みがあるとして
PostQuitMessageが飛んでくるとWM_DESTROYが来ないでアプリが終了してしますね
そのためにデストラクタでもmapから関連付けを削除しようと試みたときに
Windowクラスのデストラクタではmapオブジェクトが既に解体済みとなってしまって
アクセスした時点でアプリが不正メモリアクセスで落ちます。
↓は上とは関係ないけど落ちるケース
scopeつければいいんだけどscopeつけると宣言と同時にnewしないといけないから
ちょっと使いにくいなあ
class R{
A a;
~this(){a.func();}
void set(A a){this.a = a;}
};
class A{
void func(){}
}
void main()
{
auto r = new R;
r.set(new A); // rが解体されるときaは既に解体済みのためa.func()でcore
}
0651デフォルトの名無しさん
2010/11/18(木) 22:13:010652デフォルトの名無しさん
2010/11/18(木) 22:23:02その例だとmapごと消えるんだからわざわざ手動で関連付けを消す必要性が感じられない
もしWindowクラスがOSのリソースを持ってるからというなら、
>>645の通りWindowクラスのデストラクタで解放すればよいのでは
>>651
本家マニュアルのデストラクタの説明に書いてありますな
0653デフォルトの名無しさん
2010/11/18(木) 22:24:57でもデストラクタ以外に自動で呼ばれるものがないからね・・
自分で解放メソッド呼ばなければならないなんてCやってた頃に巻き戻されたようだ
0654デフォルトの名無しさん
2010/11/18(木) 22:30:570655デフォルトの名無しさん
2010/11/18(木) 22:32:59mapは用途から考えるとstaticでWindowインスタンスから共通で触れるもの、っていうのと
Dはdeleteでデストラクトが出来るっていうのを踏まえて考えると
デストラクタで解放しないとすると勝手にdeleteやられちゃった場合
リソースが宙ぶらりんで残っちゃうわけで、そうなるとやっぱりデストラクタで
解放するしかうんぬんと、、、 どつぼに嵌っています
0656デフォルトの名無しさん
2010/11/18(木) 22:49:23mapをmainの中に入れる。(autoにする)
静的デストラクタ。
解決するか分かんないけど。
0657デフォルトの名無しさん
2010/11/18(木) 23:17:33静的グローバル変数のオブジェクトを、mainで生成、開放する。
0658デフォルトの名無しさん
2010/11/18(木) 23:27:29http://ideone.com/ixADU
import std.c.stdio;
class A{static ~this(){printf("~A\n");}}
class B{~this(){printf("~B\n");}}
class C{~this(){printf("~C\n");}}
void main()
{
auto a = new A;
auto b = new B;
auto c = new C;
}
---output
~A
~C
~B
0659デフォルトの名無しさん
2010/11/18(木) 23:32:460660デフォルトの名無しさん
2010/11/18(木) 23:38:25すごい力技すなぁw
考えてみます
0661デフォルトの名無しさん
2010/11/18(木) 23:42:30詳細のソースだしてくれ...
0662デフォルトの名無しさん
2010/11/19(金) 00:43:41構造体で包んで、コンストラクタとデストラクタで登録するのが良いかと。
0663デフォルトの名無しさん
2010/11/19(金) 10:29:43ちょっと待て。
そんな変な方法取るぐらいなら、scopeで処理する方が幾分もマシだぞ。
0664デフォルトの名無しさん
2010/11/19(金) 19:00:21どっちのスコープ?scopeストレージクラスはそのうち消えるよ。
scopeガード文は消えないけど、それを使ってclassのデストラクタが呼ばれること自体を保証
できるわけではない(クラスを使う人が確実にdeleteするとは限らない)から、
クラスが破壊されるときにメンバのオブジェクトをいじる/壊す方法が欲しくなる。
その方法としては、 >>659>>662 の方法が妥当かなと思う。
0665デフォルトの名無しさん
2010/11/20(土) 00:15:07誰か、今後の変更予定をwikiにまとめておくれよ
0666デフォルトの名無しさん
2010/11/20(土) 03:02:590667デフォルトの名無しさん
2010/11/20(土) 11:14:34どこが妥当だ。
本来GCで管理してないメモリを、無理やり管理させたら、何が起こるか分らないぞ。
ライブラリの生成・破棄のルールをGCが知ることも出来ないしな。
リソースを管理してるクラスを、mainで生成・破棄を確実に起こすようにするか、
メンバをstaticにして、静的デストラクタでやっちゃう方が幾分もマシ。
0668デフォルトの名無しさん
2010/11/20(土) 12:37:15addRoot/removeRootは本来GCで管理してないメモリを無理やり管理させる機能ではありません。
つまり、こういうこと。
ttp://ideone.com/k8oBR
0669デフォルトの名無しさん
2010/11/20(土) 13:41:430670デフォルトの名無しさん
2010/11/20(土) 15:16:10・・・・・
http://ideone.com/R8f3F
0671デフォルトの名無しさん
2010/11/20(土) 17:22:28デストラクタの呼ばれる順番が、classによって保証されているのか
classを使う側次第なのか、の違いなんじゃないの
deleteを書き忘れたら、順番が不定になって
落ちたり落ちなかったり、わかりずらいバグを生むとか
0672デフォルトの名無しさん
2010/11/20(土) 17:59:151.呼ばれる順番(goes out of scopeした順?)
2.必ず呼ばれる
3.メンバ(クラスを含む?)にさわれる
ことが保障されてるのか
0673デフォルトの名無しさん
2010/11/20(土) 18:17:36これでも動いた。
>>672
それはないだろー。
0674デフォルトの名無しさん
2010/11/20(土) 18:19:080675デフォルトの名無しさん
2010/11/20(土) 19:28:49それは、GC管理下のメンバオブジェクトには触ってないから、動いて当然
0676デフォルトの名無しさん
2010/11/20(土) 22:03:52is:参照(ポインタ)同士の比較
==:opEquals(operator==)での比較
インスタンスがnullかチェックする場合、isの方を使います。
分かりづらかったので、同じくC++から来た人用に。
0677デフォルトの名無しさん
2010/11/20(土) 22:46:120678デフォルトの名無しさん
2010/11/21(日) 00:25:50テンプレートすごいなあ
thisを置き換えることでTをstructの外側から透過的に使えちゃうとか
こういうテクニックってどこかにまとまってたりします?
自分じゃこういう使い方絶対思いつけない。
struct ControlledData(T) {
T self;
alias self this;
0679デフォルトの名無しさん
2010/11/21(日) 00:54:17ある意味phobosのコードが見本市状態だな
andreiのコードとか変態極まる
0680デフォルトの名無しさん
2010/11/21(日) 01:57:34あと、値型のポインタの比較はどっちでもいいような気がする
int* p;
p is null
p == null
0681デフォルトの名無しさん
2010/11/21(日) 11:55:24じゃあ>>673でいいってことだね。
0682デフォルトの名無しさん
2010/11/21(日) 11:59:20BのデストラクタでAに触ってみてテストするべきじゃ?
0683デフォルトの名無しさん
2010/11/21(日) 12:42:44なにを?
とりあえず触れ、ということなら、それは不要だ。(目的は達成しているので)
0684デフォルトの名無しさん
2010/11/21(日) 12:49:44一応最新のダウンロードしたら
2010/04/28 08:58
になってたお
0685デフォルトの名無しさん
2010/11/21(日) 14:07:390686デフォルトの名無しさん
2010/11/21(日) 15:04:57http://ideone.com/Fu3iF
あれ?並列処理されてる?(不完全だが)(-O -release -inlineでコンパイルしてね。)
0687686
2010/11/21(日) 15:09:04ただ、描画処理が別スレッドで動いてるだけだねww
0688デフォルトの名無しさん
2010/11/21(日) 15:40:02何の目的を果たしたのか分からないけど
BのデストラクタでAに触ったら落ちた
0690デフォルトの名無しさん
2010/11/21(日) 17:42:28複雑な依存関係があって、別のオブジェクトを触る必要がある場合の話なんじゃないの?
0691デフォルトの名無しさん
2010/11/21(日) 18:04:28他の場所から参照されている以外に、
リソースを解放する時に他の場所を気にする必要があるケースってなんだ。
0692デフォルトの名無しさん
2010/11/21(日) 18:41:500693デフォルトの名無しさん
2010/11/21(日) 19:32:56それにしても質問者はどこへ?
0694デフォルトの名無しさん
2010/11/21(日) 20:06:07元々はデストラクタが呼ばれる順を制御したいって話じゃなかったっけ?
0695デフォルトの名無しさん
2010/11/21(日) 22:19:54それは解決法の一例であがっただけだよ。
0696デフォルトの名無しさん
2010/11/21(日) 22:26:32http://digitalmars.com/d/2.0/class.html#AliasThis
何を勘違いしているのか分からないけどtemplateとか関係ない普通の機能
0697デフォルトの名無しさん
2010/11/21(日) 23:04:24まじだ
あれ?演算子オーバーロードはalias先のthisのを使えないのは仕様なのかな
0698672
2010/11/22(月) 14:51:26クラスのデストラクタは
1.たかだか1回しか呼ばれない
2.GC管理外のメンバには触れる
o 明示的にdeleteされるか、GC.collectが呼ばれない限り
3.いつ呼ばれるか、そもそも必ず呼ばれるのかすら分からない
構造体のデストラクタは、
4.スコープから出たときに必ず1回呼ばれる
o ただし構造体AがクラスBのメンバの場合
5.構造体Aがスコープから出るのはクラスBのデストラクタが実行された後である
o さらにこの構造体AのメンバにクラスCが含まれる場合、
6.クラスBがすべての参照を失った時点で、クラスCの参照は1減る
では、添削を頼む!↓
0699デフォルトの名無しさん
2010/11/22(月) 16:31:30windowをmapに登録するついでに window.connect(&map.removeMe)、
で、windowが死ぬときに this.emit(this)。
mapがデストラクトされたら勝手にdisconnectされるようにはなってたはず。
と思ったけど、デストラクタから呼ぶとsignal関係のメンバ自体が先に解放されてる可能性があるか…
0700デフォルトの名無しさん
2010/11/22(月) 18:30:051. true. デストラクタが呼ばれる回数は1回以下(0回のこともある)
2. true. GC管理外のメンバには触れる。
3. true.
4. false. 構造体でもnewされた場合は呼ばれない可能性がある。
5. おそらくtrue. 明確に規定されていないが、事実上(少なくともdmd)はtrue.
一応デストラクタで触れないのはGC管理下のメンバと言うことになっているので大丈夫だとは思う。
6. 参照カウンタではないので参照が減るという表現もおかしいが…
構造体AのデストラクタではCをいじることはできない。
(ただしaddRootなどでGCが自動で解放しないことを確実にした場合はこの限りではない。)
0701デフォルトの名無しさん
2010/11/22(月) 19:42:36まずGCの動作原理を理解しろって ttp://www.kmonos.net/alang/d/2.0/garbage.html
自分の理解では…
GCは、メモリの要る/要らないを、staticデータ/スタック/rootリスト からポインタをたどって調べる。
GCが動作したした時点で、たどる事の出来ないGC管理メモリは、全て破棄の対象になる。
(mallocなどのメモリは、GC管理メモリではないので対象外)
デストラクタの呼ばれる順序は、破棄対象であれば、親子順などの考慮は一切無く呼ばれる。(順序は予測不能)
つまり、デストラクタが呼ばれた時点で、メンバオブジェクトが既に破棄されている可能性がある。だから触ってはダメ。
メンバオブジェクトを、あらかじめGC.addRootでrootリストに登録しとけば、破棄されてないはずなので触れる。
不要になったら、GC.removeRootで登録解除 & 必要に応じてdelete。
GC.collect により任意の時点でGCを動作させる事が可能。(破棄対象のデストラクタが全部呼ばれる)
0702デフォルトの名無しさん
2010/11/22(月) 21:11:55imt a;
double b;
long c;
}
のメンバは、一緒に破棄されるのか、それとも別々なのか。
多分一緒だと思うけど。
0703デフォルトの名無しさん
2010/11/22(月) 21:29:420704デフォルトの名無しさん
2010/11/22(月) 21:41:400705デフォルトの名無しさん
2010/11/22(月) 21:42:01別々にnewされたメンバでないなら問題ないはず
>>703
typoじゃないの?w
0706698
2010/11/23(火) 00:20:344.false -> あっ!構造体で new とか盲点
>>668 をnewで書き直したら(落ちなかったが)デストラクタよばれんかった。
クラス(設計)側でデストラクタの挙動を保障するのは無理?なのか?コメントの出番ですか?
6.参照カウンタ-> そう、それはまあ概念テキな表現上のアレです。
デストラクタって話題にのぼるたびにチェックしてるつもりなんだけど
結局「なんかメンドクセ!」という印象しか残らないんだよな。
0707デフォルトの名無しさん
2010/11/23(火) 00:32:29通常は>>673。
解放の順序が重要なら>>668でFA
0708デフォルトの名無しさん
2010/11/24(水) 21:06:44俺は生態系シミュレータ(形だけ)作ってるけど。
0709デフォルトの名無しさん
2010/11/24(水) 21:15:340710デフォルトの名無しさん
2010/11/24(水) 21:17:36何故移植?
0711デフォルトの名無しさん
2010/11/24(水) 21:27:29D最強説
0712デフォルトの名無しさん
2010/11/24(水) 21:30:35将来の展望が真っ暗です(ライブラリ的な意味で
0713デフォルトの名無しさん
2010/11/24(水) 22:09:150714デフォルトの名無しさん
2010/11/24(水) 22:29:30ちょwwwww 曖昧すぎwwwww
0715デフォルトの名無しさん
2010/11/24(水) 22:37:28ゲーム製作の練習に単純そうなゲームを選んで移植してます
0716デフォルトの名無しさん
2010/11/24(水) 22:54:09ボンブリスとかぷよぷよとかいいよね
0717デフォルトの名無しさん
2010/11/24(水) 22:56:51Lノ \
./ .\
./ _ \
/ l~l ̄ _``ー- 、 .\
\. l .l i' /ゝ_i"iヽ`ヽ /
.\l,l ゝlノ~ゝl.ノ i/
,l .l l `l゙l、 l
l ,l` | l l l
,l ,l′ .l l l l おめーらもっと実用的なもの作れよ
,l ,l° ,l .,// ,l'
l. ,l゙ l _/゙ ./
. /゚,l゙  ̄ _,,,ノ
// ̄ ̄ ̄ _.,-'
`` ゙̄/ ̄ ̄\
/ /
\ /
(⌒つ ( "つ
 ̄  ̄
0718デフォルトの名無しさん
2010/11/24(水) 23:03:58それは個人レベルだとなかなか大変...
0719デフォルトの名無しさん
2010/11/24(水) 23:42:12(⌒ヽ ヽ⌒)
|:::: ̄  ̄l
. |::: |
|:::: (● ) (●)|
.|::: (_人__) | …
|::: `⌒´ |
|::: __ |_
|::: ノ__) |_)
|::: |
|::: |
\___、⌒i___ノ⌒ヽ
(_ノ ヽ_ノ
0720デフォルトの名無しさん
2010/11/25(木) 05:23:170721デフォルトの名無しさん
2010/11/25(木) 07:07:250722デフォルトの名無しさん
2010/11/25(木) 18:18:59悪戦苦闘中。
0723デフォルトの名無しさん
2010/11/25(木) 19:06:20実は環境変数PATHの設定の仕方がよくわかって無かったというオチ。
0724デフォルトの名無しさん
2010/11/25(木) 20:06:400725デフォルトの名無しさん
2010/11/27(土) 17:48:57Dを使うときは「駄目なら駄目でもいいや」くらいの気合いの入れ方じゃ駄目だ
0726デフォルトの名無しさん
2010/11/27(土) 18:04:080727デフォルトの名無しさん
2010/11/27(土) 18:16:440728デフォルトの名無しさん
2010/11/27(土) 19:04:46全く同じレスをこのスレで見たな。
0729デフォルトの名無しさん
2010/11/27(土) 19:20:03そういえば俺もまったく同じレスをこのスレでした覚えがある…
0730デフォルトの名無しさん
2010/11/27(土) 19:44:14( .|__丿、
/  ̄ \
/ \
. / _,,,---─--、_ \
< | | ,,--、 `ヽ、. /
\.| | { Yミリ`Y´,,ヽ ヽ /
\.| ゝしイ ({ミ:リ ∨
l .| | `l´| |
| | .|. | | |
,' ,' .,'. ,' ,' |
// ./ // ,'
// / ,/ /
...//  ̄ ./
/ィ-─────イ
`── /──\
/ 〉
\ /
( ̄`ヽ、 /〃 ̄)
`─-イ ゝ--'
0731デフォルトの名無しさん
2010/11/28(日) 05:52:41(int a){return f(a);}()
のシンタックスシュガーが欲しいいい('A`)なんども出てくると可読性が悪すぎる
f(a) @ int a
みたいなさぁ、なんかこう、わかりやすくできないかなあ
0732デフォルトの名無しさん
2010/11/28(日) 06:05:28汚いからイヤってのじゃねーの
0733デフォルトの名無しさん
2010/11/28(日) 08:53:340734デフォルトの名無しさん
2010/11/28(日) 09:32:53lazy f(a)
0735デフォルトの名無しさん
2010/11/28(日) 13:17:09(int a){return{return f(a);};}(b)
を
f(a) @int a=b
だったけど、よく考えなくてもシンタックスシュガーが必要なほど一般的に使われそうな文じゃないわな
0736デフォルトの名無しさん
2010/11/28(日) 13:49:180737デフォルトの名無しさん
2010/11/28(日) 20:48:20まだ寝ぼけてるでしょ?
aがf()に伝わってないぞ。
0738デフォルトの名無しさん
2010/11/28(日) 20:49:45内側のクロージャでも使えるはず
0739デフォルトの名無しさん
2010/11/28(日) 20:52:340740デフォルトの名無しさん
2010/11/28(日) 21:12:13http://ideone.com/ZXlDS
こうなるのかな?
0741デフォルトの名無しさん
2010/11/28(日) 21:16:15http://ideone.com/UnWhJ
あー、ややこしい。
0742デフォルトの名無しさん
2010/11/28(日) 21:20:3342を引数にf()を呼び出すクロージャになるわけだ
ややこしさはともかく用途が気になる
0743デフォルトの名無しさん
2010/11/28(日) 21:35:300744デフォルトの名無しさん
2010/11/28(日) 21:43:48いや、ちがう。
(int a){return{return f(a);};}(b)
で、返ってくるのは、f(b)の結果だ。
・・・どうでもいいけど。
>>743
>>741見れば、どうなってるのかイメージしやすいと思う。
・・・それにしても、何故これが通らない?
http://ideone.com/DeXTI
0745デフォルトの名無しさん
2010/11/28(日) 21:49:28もうどうでもいいやww
0746デフォルトの名無しさん
2010/11/28(日) 21:51:23よく考えたら>>742であってるわwqww
0747デフォルトの名無しさん
2010/11/28(日) 22:00:26http://ideone.com/zC7VM
0748デフォルトの名無しさん
2010/11/28(日) 22:01:29writeln(a());
で13が出ると
0749デフォルトの名無しさん
2010/11/28(日) 22:05:19http://ideone.com/oeT7z
0750デフォルトの名無しさん
2010/11/28(日) 22:22:21{int a = b; return f(a);}
http://ideone.com/u5oTJ
0751デフォルトの名無しさん
2010/11/28(日) 22:44:470752デフォルトの名無しさん
2010/11/28(日) 22:45:54ところでstd.bindののコンパイルの通し方が分からんのだが。
0753デフォルトの名無しさん
2010/11/28(日) 22:51:11普通に(int a){return{return f(a);};}をその場でコールせずに関数間で受け渡ししたりするんじゃね?
0754デフォルトの名無しさん
2010/11/28(日) 23:55:12http://ideone.com/BEu6y
0755デフォルトの名無しさん
2010/11/29(月) 00:50:07前スレに「bindはずっと前から壊れてるけど誰も直そうとしない」とあった
0756デフォルトの名無しさん
2010/11/29(月) 02:42:58bindの修復はbind自体が不要だと思えたから投げた
0757754
2010/11/29(月) 04:42:30こうやって比較してみると・・・まあ意味はあるのか
0758デフォルトの名無しさん
2010/11/29(月) 05:05:49ごちゃり。。。正直他人の書いたこの手のコードは読めない
0759754
2010/11/29(月) 05:42:00http://ideone.com/hoYNv
0760デフォルトの名無しさん
2010/11/29(月) 10:56:150761デフォルトの名無しさん
2010/11/29(月) 11:36:14http://ideone.com/AuK94
0762デフォルトの名無しさん
2010/11/29(月) 11:45:19http://ideone.com/jrTYq
0763デフォルトの名無しさん
2010/11/29(月) 12:03:33わかりずらくなってるwww
0764デフォルトの名無しさん
2010/11/29(月) 12:20:27そもそも>>735の
(int a){return f(a);}()
ってエラーだろw
>>763
http://ideone.com/6RFIh
ちょっとしたことだがこうすると
f(a) @int a=b
っぽいな。少なくともreturnが2回連続で出てくることはなくなったなw
0765デフォルトの名無しさん
2010/11/29(月) 12:35:02てか、よく見たら・・・
(int a){return{return f(a) + b;};}(i)
意味変わってんじゃねえかwwwww
0766デフォルトの名無しさん
2010/11/29(月) 12:38:20f(a,b)ってことでここはひとつw
0767デフォルトの名無しさん
2010/11/29(月) 12:54:01そういう問題じゃ無く・・・
http://ideone.com/xdC1X
0768デフォルトの名無しさん
2010/11/29(月) 12:59:580769デフォルトの名無しさん
2010/11/29(月) 13:28:34俺もなんか良く分らなくなってきたw
0770デフォルトの名無しさん
2010/11/29(月) 14:02:040771デフォルトの名無しさん
2010/11/29(月) 14:30:45http://ideone.com/ytBVu 無名関数とクロージャ。
http://ideone.com/OiE83 クラス。
http://ideone.com/B0hbf テンプレート。
http://ideone.com/R3BFH 直接w
toClosure("f(a)");で、同じものを返す、と言うのもやりたかったが挫折。
0772デフォルトの名無しさん
2010/11/29(月) 14:47:110773デフォルトの名無しさん
2010/11/29(月) 18:11:270774デフォルトの名無しさん
2010/11/29(月) 18:20:250775デフォルトの名無しさん
2010/11/29(月) 18:33:51いちいち構造体作らなくていいし
0776デフォルトの名無しさん
2010/11/29(月) 19:08:21一ヵ所変更したらそれにつられて、ほかの値も自動的(呼び出し時に)に変わるんだな。
つどループまわせばいいだけなんだけど。
0777デフォルトの名無しさん
2010/11/29(月) 20:55:01違うよ、クロージャを作るってだけだよ。
0778デフォルトの名無しさん
2010/11/30(火) 10:45:330779デフォルトの名無しさん
2010/11/30(火) 12:36:250780デフォルトの名無しさん
2010/11/30(火) 13:36:28DはGC周りを整理すればモバイル機器用のミドルウェアを書くには最適だと思うんだがなあ
0781デフォルトの名無しさん
2010/11/30(火) 16:28:250782デフォルトの名無しさん
2010/11/30(火) 17:17:570783デフォルトの名無しさん
2010/11/30(火) 17:19:530784デフォルトの名無しさん
2010/11/30(火) 17:40:19GCだけ切ると言語も変なことになる
注意してGC経由でのアロケートを避けるしかないんじゃないかね
0785デフォルトの名無しさん
2010/11/30(火) 17:56:350786デフォルトの名無しさん
2010/11/30(火) 18:47:33メモリ消費がガンガン増えていく?
男なら細けぇこと気にすんな!
0787デフォルトの名無しさん
2010/11/30(火) 18:53:300788デフォルトの名無しさん
2010/11/30(火) 18:58:08用意してくれればいいんじゃなかろうか
0789デフォルトの名無しさん
2010/11/30(火) 20:06:320790デフォルトの名無しさん
2010/11/30(火) 21:07:090791デフォルトの名無しさん
2010/11/30(火) 21:13:06アプリケーション向きだ
GUIライブラリさえちゃんと使えればだけど
0792デフォルトの名無しさん
2010/11/30(火) 21:19:26十分システムプログラミング向けだと思うけど。
0793デフォルトの名無しさん
2010/11/30(火) 22:37:31GCないC++0xにclosure入るんじゃなかった?
0794デフォルトの名無しさん
2010/11/30(火) 23:19:08C++のラムダは、ローカル変数への参照を持った関数オブジェクトなんで、
一般的に言われるクロージャ(環境付き関数ポインタ)とはちょっと違う。
使うたびに別の型になるしね。
たぶん既存のコンパイラにC言語にない制御構造を追加するのがめんどくさいせい。
0795デフォルトの名無しさん
2010/11/30(火) 23:37:15クローじゃの代入による副作用を禁止するか、privateなものにのみ代入できればOKか。
0796デフォルトの名無しさん
2010/11/30(火) 23:39:180797デフォルトの名無しさん
2010/12/01(水) 00:05:14つまりは参照カウント出来ればいいだけなんだけど
0798デフォルトの名無しさん
2010/12/01(水) 00:57:23↓どうぞどうぞ
0799デフォルトの名無しさん
2010/12/01(水) 01:54:030800デフォルトの名無しさん
2010/12/01(水) 02:11:180801デフォルトの名無しさん
2010/12/01(水) 02:23:020802デフォルトの名無しさん
2010/12/01(水) 03:33:530803デフォルトの名無しさん
2010/12/01(水) 04:40:530804デフォルトの名無しさん
2010/12/01(水) 09:13:22ことあるごとにGC動くからどうせダメか
0805デフォルトの名無しさん
2010/12/01(水) 09:36:120806デフォルトの名無しさん
2010/12/01(水) 10:08:58メモリ確保と解放や、動的配列の長さ変更を頻繁にするなら。
0807デフォルトの名無しさん
2010/12/01(水) 14:26:01データ構造だけやってみた。
http://ideone.com/x9Tdl
http://ideone.com/m7ilj
0808デフォルトの名無しさん
2010/12/01(水) 15:57:30メモリ制御を deterministicにした配列型です。配列のために割り当てられたメモリは、不要になると直ちに解放されます。
ガベージコレクションに頼ることはありません。Array は malloc と free で独自のメモリ管理を行います。
0809デフォルトの名無しさん
2010/12/01(水) 18:17:520810デフォルトの名無しさん
2010/12/01(水) 19:07:190811デフォルトの名無しさん
2010/12/01(水) 19:15:40-O付きでビルドすると強制終了してしまって困ってます。
-O無し(release、inlineはおk)だと動きます。
何か解決策で思い当たるふしがあれば教えていただけないでしょうか?
また、ソースからpragmaか何かを使用してコンパイラオプションを変更する方法はないでしょうか?
0812デフォルトの名無しさん
2010/12/01(水) 19:37:14俺もdmdの-Oとか-inlineとかには散々苦しめられましたよ…
使わないことで解決した
0813デフォルトの名無しさん
2010/12/01(水) 19:52:160814811
2010/12/01(水) 20:01:16・・・と、今c++の方と比較したら構造体のサイズが違うのを見つけました。
まだ何とかなるかもしれないのでがんがります。
0815デフォルトの名無しさん
2010/12/01(水) 20:16:400816デフォルトの名無しさん
2010/12/01(水) 20:18:250817デフォルトの名無しさん
2010/12/02(木) 03:11:140818デフォルトの名無しさん
2010/12/02(木) 03:12:000819811
2010/12/02(木) 11:36:03ご迷惑おかけしました。
昔は宣言と定義が一緒だったのかな・・?
↓
alias st_mysql* master;
alias取ったら構造体のサイズが一致して-Oでも動くようになりました。
0820デフォルトの名無しさん
2010/12/03(金) 23:18:550821デフォルトの名無しさん
2010/12/03(金) 23:27:46ライセンスは2.0ならBoost Licenseだった。1.0はBSD
0822デフォルトの名無しさん
2010/12/03(金) 23:51:570823デフォルトの名無しさん
2010/12/03(金) 23:58:220824デフォルトの名無しさん
2010/12/04(土) 00:18:110825デフォルトの名無しさん
2010/12/04(土) 00:21:400826デフォルトの名無しさん
2010/12/04(土) 00:37:520827デフォルトの名無しさん
2010/12/04(土) 04:31:520828デフォルトの名無しさん
2010/12/04(土) 12:58:42list.remove(obj);
0829デフォルトの名無しさん
2010/12/04(土) 20:19:59と、
immutable(int) i;
って、違うものだったんだね。(突然)
0830デフォルトの名無しさん
2010/12/04(土) 20:23:090831デフォルトの名無しさん
2010/12/04(土) 20:51:55immutable int i;
は、記憶域クラス。
immutable(int) i;
は、データ型。
今、例作ってるから待ってて。
0832デフォルトの名無しさん
2010/12/04(土) 20:58:080833デフォルトの名無しさん
2010/12/04(土) 21:10:19immutable int i;
と、
immutable(int) i;
は意味的には同じですw
immutable int f(){}
と、
immutable(int) f(){}
は、完全に別物だけど。
0834デフォルトの名無しさん
2010/12/04(土) 21:25:53とかわけわかんないことになるよな
0835デフォルトの名無しさん
2010/12/04(土) 22:01:17そこらへんの仕様変わらないかな?
すんごくまぎらわしい。
0836デフォルトの名無しさん
2010/12/04(土) 22:41:06const(T) f() const{}
って書けるからいいや
0837デフォルトの名無しさん
2010/12/04(土) 22:51:02それはそうだけどさ、
const int* f() {}
って、書いてあったら、
本来はどっちの意味で書かれているのか、見ただけじゃ分らないじゃん。
0838デフォルトの名無しさん
2010/12/04(土) 23:07:06int f() pure nothrow {}
って、書けることに気付いた。
http://ideone.com/kBooG
他には、inout shared も、後に書ける模様。
0839デフォルトの名無しさん
2010/12/04(土) 23:07:27某日本人コミッタは後置きとか統一が取れなくなるから廃止するべきじゃね?って言ってるな
でも後置きすると結構すっきりするから俺は好きだ
0840デフォルトの名無しさん
2010/12/04(土) 23:44:54pure nothrow const const(int) delegate() pure nothrow f() { return delegate const(int)() pure nothrow { return i; }; }
一応合法ですよ。
http://ideone.com/mYR2B
0841デフォルトの名無しさん
2010/12/04(土) 23:52:480842デフォルトの名無しさん
2010/12/04(土) 23:56:48え、何の話。
0843デフォルトの名無しさん
2010/12/05(日) 01:01:40それはint* f() const {}じゃないの?
型にconstを付けたいなら()が出てくるでしょ
0844デフォルトの名無しさん
2010/12/05(日) 01:05:21もしかしたら間違えて書いてるかも? という話。
0845デフォルトの名無しさん
2010/12/05(日) 19:51:20誰か、直すか9x系は切り捨てるかしといてくれ
0846デフォルトの名無しさん
2010/12/06(月) 01:18:400847デフォルトの名無しさん
2010/12/06(月) 02:11:13synchronizedは占有ロック、書き込みもする為にに一つのスレッドで独占する
0848デフォルトの名無しさん
2010/12/06(月) 12:34:57二つとも間違ってるって酷い・・・・
>>846
sharedは、データ型修飾(または記憶域クラス)のキーワードで、スレッド間共有をする為の物。
D2では、グローバル変数やstatic変数はTLS(スレッドローカルストレージ)で、
個別のスレッドごとに、実態が一つずつ用意されるけど、
sharedと付けた変数は、プログラム中で実態が一つだけ用意されて、
全てのスレッド間で、その一つの実態を共有するようになる。
synchronizedは、ブロック文と記憶域クラスのキーワードで、同時実行制御をする為の物。
同じ文を異なるスレッド間で同時に実行しないようにする。
マルチスレッドプログラミングを学べばすぐに使い方がわかると思う。
記憶域クラスのsynchronizedを、変数に付けるとどうなるのかは、ドキュメントに書いてないから知らない。
どちらもスレッド機能を使わないなら、いらない物だ。
0849デフォルトの名無しさん
2010/12/06(月) 12:40:35間違ってるなんて言ってすまそ。
0850デフォルトの名無しさん
2010/12/06(月) 18:36:21sharedとsynchronizedの比較というところから想像するに、クラスの属性か、メンバ関数の属性に関する質問かな?
だとすると、>>848の回答も、合っているけど焦点がちょっとずれている。
クラスとかの属性としてsharedを指定すると、メンバ変数・メンバ関数すべての属性にsharedがつく。
また、sharedクラスは複数のスレッドから参照/更新するために利用されるというドキュメント的な意味もある。
クラスの属性としてsynchronizedを指定すると、sharedクラスに加え、メンバ関数が
synchronizedメンバ関数になる。
sharedメンバ関数は排他処理の管理を独自で行うときに使用するもので、ロックフリーとか
細かくクリティカルセクションを切りたい時に使ったりする。
あとsharedメンバ関数からは、shared型のメンバ変数しか参照/更新できない。
これにもドキュメント的な意味がある。
synchronizedメンバ関数は、sharedメンバ関数に加え、関数に入った瞬間に
クラスインスタンスでクリティカルセクションを作って排他する効果がつく。
ちなみにsharedのあたりはアンドキュメントなので、ウォルター氏とかアンドレイ氏の
スライドとか読まないとわからなかったりする。
長文すみませんでした。
0851デフォルトの名無しさん
2010/12/06(月) 20:00:350852デフォルトの名無しさん
2010/12/06(月) 22:35:270853デフォルトの名無しさん
2010/12/06(月) 22:48:110854デフォルトの名無しさん
2010/12/06(月) 22:48:420855デフォルトの名無しさん
2010/12/06(月) 22:57:400856デフォルトの名無しさん
2010/12/06(月) 23:08:30どっちにしても違和感あるけど。
クラスにsharedと付いてても、クラスの用途はあんまりわからんし。
0857デフォルトの名無しさん
2010/12/06(月) 23:10:39sharedとsynchronized難しいな
0858デフォルトの名無しさん
2010/12/07(火) 00:01:47「privateメンバ変数以外では、アンダースコア '_' で始まる名前は使用しません」
は、「privateメンバ変数はアンダースコアで始まる名前にする」、と解釈していいのか?
0859デフォルトの名無しさん
2010/12/07(火) 00:04:26俺は末尾に'_'派
0860デフォルトの名無しさん
2010/12/07(火) 00:13:55わざわざ「始まっていいよ」って許可出されるとちょっと深読みしてしまう。
0861デフォルトの名無しさん
2010/12/07(火) 02:03:58r' lメ、
/ ̄´ \
. /____ \
. < Y l r‐, r‐,\ /
\! l ビノ_ヒ'ノ、 Y
l l ! !l l
. ! ! l l ! .!
l l l !ノ !
. l l ∠-‐´_ . ;.'
l,ノ――_二- ´
 ̄ ̄/ \
_\ /_
`ー-' ゝ--'
0862デフォルトの名無しさん
2010/12/08(水) 23:37:39今時Windowsの特に速度も要しないシステムでC言語って…
第一今のCには破壊的変更が無いしなぁ
0863デフォルトの名無しさん
2010/12/09(木) 02:09:43まてそれは毒されてる
0864デフォルトの名無しさん
2010/12/09(木) 23:33:45デフォルトのtraceHandlerって、いつ実装されるんだろ?
0865デフォルトの名無しさん
2010/12/10(金) 00:34:59でも、なんでデフォルトで機能させてないんだろう?
0866デフォルトの名無しさん
2010/12/10(金) 06:31:230867デフォルトの名無しさん
2010/12/10(金) 12:53:10かもしれないし、違う方法のトレースかもしれない。
でも、外郭だけは実装されてるんだよねえ。(コード見た限りだと、Windowsだけ非対応なのかもしれないがw)
ちょっと前に話題になった、ユニットテストを必ず全実行するコードも、外郭だけ実装されてたな。
次のバージョンは、いつくるのかな?
0868デフォルトの名無しさん
2010/12/11(土) 03:06:540869デフォルトの名無しさん
2010/12/11(土) 03:08:090870デフォルトの名無しさん
2010/12/11(土) 04:50:160871デフォルトの名無しさん
2010/12/11(土) 05:01:06int a;
string s=to!string(a);
0872デフォルトの名無しさん
2010/12/11(土) 05:43:27サンクス!ベリーサンクス!一晩中悩んでたのが嘘みたいだorz
!の使い方が見慣れなくてポカーンだけど、頑張ってググってみる。
それにしても、前途険しいな・・・・・・
0873デフォルトの名無しさん
2010/12/11(土) 06:57:35パラメータが一個なら括弧を略せるよ。
0874デフォルトの名無しさん
2010/12/11(土) 09:47:40C++で落ちこぼれるキッカケになった、あの奇怪で憎いあんちくしょうですね?
to!string(a);でint aもC文字列なchar* aも簡単にstringへ変換できる。スゲー!
色んな悩みが一遍に片付いた。
けど、どう動いてるのかサッパリ分かんない\(^o^)/ 頭バーン
http://www.kmonos.net/alang/d/2.0/phobos/std_conv.html
を見てもまったく意味が分からなくてワラタw
0875デフォルトの名無しさん
2010/12/11(土) 10:11:450876デフォルトの名無しさん
2010/12/11(土) 10:34:56どういうことなの
0877デフォルトの名無しさん
2010/12/11(土) 13:10:19こう使うんだよ
auto 澪 = new けいおん!ぽろりもあるよ;
0878デフォルトの名無しさん
2010/12/11(土) 13:13:32> template t(T){
> f(T v){...}
> }
↑これはDのテンプレートの宣言。
使う時は、
> t!(int);
のように、!カッコに型を書く。
すると、一番上のテンプレートの宣言は、
> template t(int){
> f(int v){...}
> }
と言う風に、Tの部分が、!カッコの型に置き換えされる。
他の型を指定した場合は、
> t!(char[]);
他の型を指定した時とは別に置き変えがされる。
> template t(char[]){
> f(char[] v){...}
> }
0879デフォルトの名無しさん
2010/12/11(土) 13:16:52それは例として適切ではないな。
alias けいおん!ぽろりもあるよ 澪;
が、適切。
0880デフォルトの名無しさん
2010/12/11(土) 13:34:02何これ
@だの__だのなんでこんなにバラバラなの
きもい
0881デフォルトの名無しさん
2010/12/11(土) 13:35:29なんでそうなってるだろうね?
まあ、近いうちに調整入るのかもしれないけど。
0882デフォルトの名無しさん
2010/12/12(日) 01:30:35D用に準備して、bthprops.lib をリンクして実行してみたんだけど、
実行時に bthprops.dll が無い、と言われてエラーになってしまう。
調べてみたら bthprops.cpl があって、これが実質の dll 的な
ものらしいんだけど、どうしたものか・・・。
bthprops.cpl をコピーしたものを bthprops.dll と言う名前にして
system32 フォルダに置いておくと大丈夫なんだけど。
coffimplib で .lib を変換したときに、所望の関数は .cpl にある、
という情報が抜け落ちてる感じ・・・?
0883デフォルトの名無しさん
2010/12/12(日) 03:40:560884デフォルトの名無しさん
2010/12/13(月) 21:33:350885デフォルトの名無しさん
2010/12/13(月) 23:16:15DFLAGS=-unittest -d
でビルドすると
Error: out of memory
って言って落ちるんだが?
DFLAGS=-unittest -d -g
にしたらdmdがクラッシュするし
どうなってんだ
0886デフォルトの名無しさん
2010/12/13(月) 23:51:02*クラッシュ版でク〜+
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
0887デフォルトの名無しさん
2010/12/14(火) 00:06:25* Associative arrays were built in, now library
* Built-in complex types are being replaced by library types
* Built-in arrays are being replaced by library types
最後のはなんかこう、Luaのを初めて見たときに近い衝撃を感じる。
しかしメモリ管理に合わせて配列の実装を言語上で選べるってのは魅力的かもしれない。
0888デフォルトの名無しさん
2010/12/14(火) 01:53:18書いてあったけど、opUnary の "i" とかでライブラリでも実現できるのかね?
0889デフォルトの名無しさん
2010/12/14(火) 02:21:540890デフォルトの名無しさん
2010/12/14(火) 02:24:45std.container はまだ使えないのか。
0891デフォルトの名無しさん
2010/12/14(火) 03:10:49どういうこと?
0892デフォルトの名無しさん
2010/12/14(火) 04:13:07いや、Built-in の優位性を主張(Dの複素数型 vs C++のstd::complex)
していたのにそれを撤回するってことは、妥協的にそれを捨てざるを得なかったのか、
それともライブラリ化しても表現力や効率性を減らさずにいけることに
なってきたからなのか。。。
んで opUnary って何だか自由に演算子を定義できそうに見えたので、
i という単項演算子でも定義すれば複素数をライブラリ化できたりするのかなぁと。
opUnary も完璧に理解してないので妄想に近い感じです。。。
0893デフォルトの名無しさん
2010/12/14(火) 04:48:13「Dの複素数型 vs C++のstd::complex」の論点は、
一つ目は複素数型だけでなく虚数型単体も用意しろ、
虚数を0+niのペアとして与えると余計な計算や余計な精度落ちが増える、ということ。
C++でもimaginary型を適切に実装すればライブラリ化できる、と書いている。
テンプレートでimaginary(T)型を定義し、
Complex(T)との関係を定義し、
alias imaginary!(double) idouble;
してやれば、あとは接尾辞iの定義をすれば組み込み型の利点を損なうことなくライブラリ化完了。
0894デフォルトの名無しさん
2010/12/14(火) 12:25:440895デフォルトの名無しさん
2010/12/14(火) 13:26:15helloworld;
0896デフォルトの名無しさん
2010/12/14(火) 15:55:10そんなこと言ってたらウォルたんが何とかして実装しちまうだろうが
0897デフォルトの名無しさん
2010/12/14(火) 19:01:340898デフォルトの名無しさん
2010/12/14(火) 20:48:20タイプミスを、グーグルさんよろしく、もしかしてこれ?みたいな
コンパイルエラー出してくれたこと。
そこから、既存の識別子に何かくっついてるのくらいは
判定できるんじゃないかと思ったので接尾辞くらいできそうだよね。
そして些細なタイポが有効なコードとみなされて、めくるめく魅惑の
バグ地獄へ誘ってくれるんだろう・・・。
0899デフォルトの名無しさん
2010/12/15(水) 00:43:43unittest : $(SRCS) $(DRUNTIME) src\unittest.d
$(DMD) $(UDFLAGS) -L/co -unittest src\unittest.d $(SRCS) $(DRUNTIME) -debuglib=$(DRUNTIME_BASE) -defaultlib=$(DRUNTIME_BASE)
ってなってるとビルド中にdruntime.libが見つからないみたいなエラーが出てるので
$(DMD) $(UDFLAGS) -L/co -unittest src\unittest.d $(SRCS) $(DRUNTIME) -debuglib=$(DRUNTIME) -defaultlib=$(DRUNTIME)
にして出なくしたけどこんなところ間違えてるわけないよねと疑心暗鬼
0900デフォルトの名無しさん
2010/12/15(水) 07:47:230901デフォルトの名無しさん
2010/12/15(水) 09:57:59Cで充分
0902デフォルトの名無しさん
2010/12/15(水) 21:17:59胸が熱くなるな
0903デフォルトの名無しさん
2010/12/15(水) 23:49:040904デフォルトの名無しさん
2010/12/16(木) 09:23:150905デフォルトの名無しさん
2010/12/16(木) 11:04:19一応下記でコンパイルは通るんですが、呼ばれんとです。
struct hoge{
this(this) {
// なんたら
}
}
0906デフォルトの名無しさん
2010/12/16(木) 11:19:35this(SOME_TUPLE)がコンストラクタ
this(int a)とかthis(string s)とか
ただしthis()はダメ
0907デフォルトの名無しさん
2010/12/16(木) 11:27:22初期化が複雑なモノは素直にクラスにするのがいいのかな。
>>906
さんくす。
0908デフォルトの名無しさん
2010/12/16(木) 11:31:38それともthis(ここがたくさん)という意味?
どっちにしてもクラスか構造体かを決めるものではないような
0909デフォルトの名無しさん
2010/12/16(木) 11:43:13Area[AreaID] allArea;
Unit[UnitID] allUnit;
static Area[AreaID] initAllArea();
}
な感じでして、hogeを持つクラスの方に初期化処理を書きたくないなーとか思ったのです。
今考え直すと構造体にする意味もないなーと。。。
スミマセン。
0910デフォルトの名無しさん
2010/12/17(金) 01:52:22@property Size Size(){return this._size;}
でも構文解析があいまいになるからやってくれないだろうな
0911デフォルトの名無しさん
2010/12/17(金) 03:38:24メソッドは大文字からだぜ☆
0912デフォルトの名無しさん
2010/12/17(金) 04:06:57小文字からだ☆
0913デフォルトの名無しさん
2010/12/17(金) 04:08:050914デフォルトの名無しさん
2010/12/17(金) 11:58:26で、あちこちで型名なんだかプロパティ名なんだか分からない物が出てくるわけですね。
0915デフォルトの名無しさん
2010/12/17(金) 18:32:010916デフォルトの名無しさん
2010/12/18(土) 21:31:310917デフォルトの名無しさん
2010/12/19(日) 15:34:260918デフォルトの名無しさん
2010/12/19(日) 16:40:150919デフォルトの名無しさん
2010/12/19(日) 18:34:37今日は12月19日(日)ってことは、来週末には本気出すんですね?
0920デフォルトの名無しさん
2010/12/19(日) 18:37:310921デフォルトの名無しさん
2010/12/19(日) 19:52:560922デフォルトの名無しさん
2010/12/19(日) 21:10:50ものによる
0923デフォルトの名無しさん
2010/12/19(日) 21:29:150924デフォルトの名無しさん
2010/12/19(日) 21:54:580925デフォルトの名無しさん
2010/12/19(日) 22:13:150926デフォルトの名無しさん
2010/12/21(火) 02:03:19if(typeof)だと派生クラスも許容しない・・
0927デフォルトの名無しさん
2010/12/21(火) 02:33:500928デフォルトの名無しさん
2010/12/21(火) 02:51:50できた!ありがとう
0929デフォルトの名無しさん
2010/12/21(火) 12:57:27std.convやtypeidはダメみたいで。
void hoge() {
}
template Hoge(func...) {
// ここで"hoge"を取りたい。引数や戻り値も必要なのでtemplateにしてます。
}
Hoge!(hoge)
0930デフォルトの名無しさん
2010/12/21(火) 14:01:49enum Hoge = F.stringof;
}
0931デフォルトの名無しさん
2010/12/21(火) 14:29:42ありがとうございます。
例が悪かったんですが、引数有りだとどうなるでしょうか?
0932デフォルトの名無しさん
2010/12/21(火) 14:58:08ありがとうございました!
alias ParameterStorageClassTuple!(F) pstc;
static if(pstc.length > 0 )
Enum Hoge = F(pstc).stringof;
else
Enum Hoge = F.stringof;
0933デフォルトの名無しさん
2010/12/21(火) 17:42:26d2.051
これといった破壊的変更なし
0934デフォルトの名無しさん
2010/12/21(火) 18:42:540935デフォルトの名無しさん
2010/12/21(火) 18:51:380936デフォルトの名無しさん
2010/12/21(火) 18:58:57で、偉大なるstd.datetime様は見なかった事にすると
0937デフォルトの名無しさん
2010/12/21(火) 19:21:000938デフォルトの名無しさん
2010/12/21(火) 19:29:07public { ... import hoge; ... }
と
public import hoge;
って別物だよね?
なんか他人のそういうコード見つけちゃって勘違いしてるのがどっちかわからないんだけど
0939デフォルトの名無しさん
2010/12/21(火) 19:38:02違ったら紛らわしいからこのままでいいと思うよ
0940デフォルトの名無しさん
2010/12/21(火) 19:38:12static thisとかはそのはずだけど
0941デフォルトの名無しさん
2010/12/22(水) 00:35:15↓
0942デフォルトの名無しさん
2010/12/22(水) 00:53:140943デフォルトの名無しさん
2010/12/22(水) 03:38:300944デフォルトの名無しさん
2010/12/22(水) 04:02:130945デフォルトの名無しさん
2010/12/22(水) 04:54:40>>858-860
まあ好きにしろって感じだな。
0946デフォルトの名無しさん
2010/12/22(水) 05:12:41datetimeとbase64のreplaceか
0947デフォルトの名無しさん
2010/12/22(水) 08:44:13is ( Type == struct );
0948デフォルトの名無しさん
2010/12/22(水) 15:25:290949デフォルトの名無しさん
2010/12/22(水) 23:49:28くそ・・・! 俺なんか0個で土俵にすら上がれなかった・・・!
・・・精進します。
0950デフォルトの名無しさん
2010/12/22(水) 23:56:35コンパイルエラー < コンパイラクラッシュ < 実行時クラッシュ
ってな感じ?
0951デフォルトの名無しさん
2010/12/23(木) 00:07:39コンパイラが丁寧に罠を仕込んでくれるアレですね
0952デフォルトの名無しさん
2010/12/23(木) 00:10:02ズバリありがとうgj
0953デフォルトの名無しさん
2010/12/23(木) 00:18:070954デフォルトの名無しさん
2010/12/23(木) 01:01:550955デフォルトの名無しさん
2010/12/24(金) 20:28:22→じゃあwxWidgetをC++から呼び出せばいいんじゃね?
そんで、それを独自にD2から呼び出せばいいんじゃね?
→あれ?これwxDとやってること同じじゃね?
→つーか、DのC++へのインターフェイスがしっかりしてればこんなに苦労しなくてもいいんじゃね?
→さっさと対応しろやゴルァ!!
0956デフォルトの名無しさん
2010/12/24(金) 21:07:15昔は
0957デフォルトの名無しさん
2010/12/25(土) 00:22:030958デフォルトの名無しさん
2010/12/25(土) 01:28:510959デフォルトの名無しさん
2010/12/25(土) 20:04:550960デフォルトの名無しさん
2010/12/25(土) 21:42:180961デフォルトの名無しさん
2010/12/25(土) 23:47:440962デフォルトの名無しさん
2010/12/26(日) 05:35:350963デフォルトの名無しさん
2010/12/26(日) 10:28:31仕様が固まれば普及するよ
0964デフォルトの名無しさん
2010/12/26(日) 10:31:350965デフォルトの名無しさん
2010/12/26(日) 11:57:520966デフォルトの名無しさん
2010/12/26(日) 15:47:29現状のD1とD2の関係みたいに
0967デフォルトの名無しさん
2010/12/26(日) 16:13:24正直なとこ安定バージョンとか作らないで欲しいくらいだ。
0968デフォルトの名無しさん
2010/12/26(日) 16:37:42あまつさえtangoとか死んでも使いたくないけどライブラリが…
0969デフォルトの名無しさん
2010/12/26(日) 16:40:28...
}
version(DMD2xxy) {
...
}
0970デフォルトの名無しさん
2010/12/26(日) 22:17:43↓"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");
}
0971デフォルトの名無しさん
2010/12/26(日) 22:33:390972970
2010/12/26(日) 23:47:38意識してなかったけど一致しなかったはず。
ただ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つけても動かんのはわけわからん。
0973デフォルトの名無しさん
2010/12/27(月) 00:57:45>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");
}
}
0974デフォルトの名無しさん
2010/12/27(月) 22:39:25http://ideone.com/AsO4J
0975デフォルトの名無しさん
2010/12/28(火) 10:46:49c++だとキャストでいけたんですが。。。
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"が渡されてしまう
}
0976975
2010/12/28(火) 10:56:37D言語 Part26
http://hibari.2ch.net/test/read.cgi/tech/1293500945/
更についでに>>972検証。
Linux DMD2.051 で"D"です。
0977デフォルトの名無しさん
2010/12/28(火) 12:22:23まず、functionじゃなくて、delegateじゃないだろうか?
次に、テンプレートのインスタンス化の時に、!()には変数の値は渡せないぜ?
(コンパイル時に決まる、整数型・浮動小数点型・文字列型は除く)
もし値渡しをやるなら、テンプレートの宣言は、
void func(F...)(F f) もしくは void func(alias F...)()
と、するべき。(後者は厳密には値渡しじゃないが)
今回は後者にすれば解決?
0978977
2010/12/28(火) 12:24:01まあ、いいや。
0979977
2010/12/28(火) 13:37:33aliasは式に対しては使えない、という仕様に阻まれたが、何とか物が出来た。
http://ideone.com/TyNL4
こういう事がしたかった訳じゃ無いのかもしれんが、個人的には満足。
0980デフォルトの名無しさん
2010/12/28(火) 14:32:10遅くなってスミマセン。
細かいことを説明すると、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++と同じ指定ができない部分についてどうしたものかと。。。
0981デフォルトの名無しさん
2010/12/28(火) 14:59:200982デフォルトの名無しさん
2010/12/28(火) 15:41:07__traits(allMembers, T)
0983デフォルトの名無しさん
2010/12/28(火) 16:17:50自分が定義したクラスのメンバ関数等を除くフィールドのみを取得したいのです。
allMembersだとメンバ関数やコンストラクタ等、余計なのが取れてしまって具合が悪いんですよね。
0985977
2010/12/28(火) 17:25:36って、結局テンプレートの使い方間違ってただけかいwww
http://ideone.com/Cdb5u
0986977
2010/12/28(火) 17:40:07http://ideone.com/sU3ar
0987デフォルトの名無しさん
2010/12/28(火) 17:50:52これだからDはやめられんぜ。
0988977
2010/12/28(火) 17:57:14http://ideone.com/lpyz7
え?こんなのいらない?
0989980
2010/12/28(火) 18:09:450990デフォルトの名無しさん
2010/12/28(火) 18:15:18なにこれこわい
0991デフォルトの名無しさん
2010/12/28(火) 18:23:23これは関数情報が入ってる構造体(thisと関数が入ってる)のアドレスじゃないかな
f.funcptrに関数そのもののアドレスがある
0992デフォルトの名無しさん
2010/12/28(火) 18:37:01言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0993デフォルトの名無しさん
2010/12/28(火) 18:43:54今更かよwww
0994デフォルトの名無しさん
2010/12/28(火) 19:55:430995デフォルトの名無しさん
2010/12/28(火) 20:15:150996977
2010/12/28(火) 20:57:24ホントだ。
http://ideone.com/5H4fI
0997デフォルトの名無しさん
2010/12/29(水) 05:43:51ttp://d.puremagic.com/issues/show_bug.cgi?id=5381
switchのバグはtrunkで修正された
0998デフォルトの名無しさん
2010/12/29(水) 05:48:370999デフォルトの名無しさん
2010/12/29(水) 09:28:57http://hibari.2ch.net/test/read.cgi/tech/1293500945/
1000デフォルトの名無しさん
2010/12/29(水) 09:30:10http://hibari.2ch.net/test/read.cgi/tech/1293500945/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。