D言語 Part12
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/02/10(土) 01:09:54過去スレは >>2
■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)
■コンパイラ
ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
ttp://gdcmac.sourceforge.net/ (GDCのmac用バイナリ)
■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://dsource.org/ (dsource)
0002デフォルトの名無しさん
2007/02/10(土) 01:10:56Part11 http://pc10.2ch.net/test/read.cgi/tech/1165621441/
Part10 http://pc8.2ch.net/test/read.cgi/tech/1158013550/
Part 9 http://pc8.2ch.net/test/read.cgi/tech/1146656260/
Part 8 http://pc8.2ch.net/test/read.cgi/tech/1137068104/
Part 7 http://pc8.2ch.net/test/read.cgi/tech/1122912733/
Part 6 http://pc8.2ch.net/test/read.cgi/tech/1109933426/
Part 5 http://pc5.2ch.net/test/read.cgi/tech/1102785854/
Part 4 http://pc5.2ch.net/test/read.cgi/tech/1091185216/
Part 3 http://pc5.2ch.net/test/read.cgi/tech/1079068715/
Part 2 http://f3.aaacafe.ne.jp/~null/cache/1079280501.html
Part 1 http://pc5.2ch.net/tech/kako/1003/10036/1003674814.html
0003デフォルトの名無しさん
2007/02/10(土) 01:35:590004デフォルトの名無しさん
2007/02/10(土) 06:18:030005デフォルトの名無しさん
2007/02/11(日) 08:08:530006デフォルトの名無しさん
2007/02/11(日) 08:22:340007デフォルトの名無しさん
2007/02/11(日) 10:36:28Frame frame = new Frame();
frame.children ~= new Label("UserID:");
frame.children ~= new TextBox();
Application.run(frame);
くらいの簡単さならDWTあたりが多分可能。
0008デフォルトの名無しさん
2007/02/11(日) 14:28:080009デフォルトの名無しさん
2007/02/11(日) 16:32:14ttp://www.dprogramming.com/entice.php
0010デフォルトの名無しさん
2007/02/12(月) 00:49:18mixin(`printf("` ~ otu ~ `");`);
0011デフォルトの名無しさん
2007/02/12(月) 01:03:520012デフォルトの名無しさん
2007/02/12(月) 01:47:590013デフォルトの名無しさん
2007/02/12(月) 02:59:43class A {
int onApply(int delegate(inout int) yield) {
return yield(1);
}
}
void main() {
foreach(n; new A) {
writefln("%d", n);
}
}
> foreach(n; new A) {
で n の型を推論できないと言われるんだが、
onApply の型から推論できるようにした方がいいよね?
単に未実装なだけ?
0014デフォルトの名無しさん
2007/02/12(月) 03:03:530015デフォルトの名無しさん
2007/02/12(月) 05:06:41import std.stdio, std.random, std.c.time;
class App {
abstract void run();
static void run(lazy App app) {
rand_seed(time(null), 10);
try {
app.run();
} catch(Exception e) {
writefln("Exception: %s", e.msg);
}
}
}
// main.d
import app;
class AppHoge : App {
// this() { throw new Exception("hoge"); }
void run() {
writefln("hoge");
}
}
void main() {
App.run(new AppHoge);
}
lazy のおかげで、AppHoge のコンストラクタで例外が投げられてもちゃんと catch されるね。
0016デフォルトの名無しさん
2007/02/12(月) 06:16:20例外が投げられたらそのまま実行を続け、
例外が投げられなかったら assert する、ということをしたいのですが・・・
先ず、try-catch-finally 文に
「例外が投げられなかった場合」の処理をする部分がないので、
実装にフラグが必要になってエレガントでないのと、
コールスタックのダンプの方法が分からないので、
その処理を関数化してしまうと、エラー箇所を表示するのに
引数に __FILE__ と __LINE__ を渡す必要が出てきます。
void mustThrow(lazy void expr, char[] filename, int line) {
bool thrown = false;
try {
expr;
} catch {
thrown = true;
}
if(!thrown) {
writefln("No exception was thrown: %s(%d)", filename, line);
assert(false);
}
}
前者の問題(エレガントでない)はともかくとして、
後者の問題(__FILE__, __LINE__ をいちいち指定する必要がある)は何とかなりませんか?
コンパイラ: GDC 0.22 for Mac OS X, based on DMD 1.004
0017デフォルトの名無しさん
2007/02/12(月) 06:36:50"あのmixin"が無いなら、__FILE__を付けるのはどうしようもない希ガス。
あと、
try {
expr; //どうせここでcatchに飛ぶはず
assert(false);
} catch {
...
}
とかやってもいいんじゃないかと思った。
まともに動くかどうかは試してないから分からないけど。
0018デフォルトの名無しさん
2007/02/12(月) 06:39:35expr が AssertError を投げる可能性を考えると、
catch(AssertError) で catch することもできませんし。
素直に DMD 1.005 対応の GDC を待つしかないようですね・・・。
0019デフォルトの名無しさん
2007/02/12(月) 06:53:46bool throws(lazy void expr) {
try {
expr;
} catch {
return true;
}
return false;
}
void error() {
throw new Exception("hoge");
}
void main() {
assert(throws(error()));
assert(throws(0));
}
二段階になるのがちょっとイマイチだけど、
それはそれで分かりやすい気もするのでこれでいいかも。
0020デフォルトの名無しさん
2007/02/12(月) 07:21:270021デフォルトの名無しさん
2007/02/12(月) 07:25:150022デフォルトの名無しさん
2007/02/12(月) 07:41:53さもなくば expr の例外が外に漏れちゃって・・・
0023デフォルトの名無しさん
2007/02/12(月) 08:06:440024デフォルトの名無しさん
2007/02/12(月) 08:27:38for(int i = 0; i < 10; ++i) {
...
}
みたいなループは D でも for 使わないとダメ?
まあ、foreach(i; new Range(10)) { ... } みたいにできる Range は定義できるけど、
どうも -O3 でも遅いみたいだし・・・。
いっその事、foreach(i; 10) { ... } がその代わりになるように
言語仕様の変更を提案した方がいいんだろうか。
foreach(i; 2, 10, 2) で 2 から 10 まで 2 つごとに・・・とか。
0025デフォルトの名無しさん
2007/02/12(月) 09:15:35kwsk
0026デフォルトの名無しさん
2007/02/12(月) 09:19:38for 文分かりにくいー、とか言う人いるじゃん?
0027デフォルトの名無しさん
2007/02/12(月) 09:30:420028デフォルトの名無しさん
2007/02/12(月) 09:45:15C 風の for 文での指定回数ループが直感的じゃないからだぜ。
0029デフォルトの名無しさん
2007/02/12(月) 09:47:360030デフォルトの名無しさん
2007/02/12(月) 09:56:51foreach(i; 10) { ... } とかできたらさらに便利じゃない?
0031デフォルトの名無しさん
2007/02/12(月) 10:37:20...
}
int[] createArray(int n){
int[] array;
array.length = n;
for(int i=0;i<n;i++)
array [n]= i;
return array;
}
とかやっとけば?
0032デフォルトの名無しさん
2007/02/12(月) 10:57:56最適化しても遅いからなんだかなあと・・・。
0033デフォルトの名無しさん
2007/02/12(月) 11:11:32mixinよく判らんから例出せんけど、できるんじゃないかな。
0034デフォルトの名無しさん
2007/02/12(月) 11:22:580035デフォルトの名無しさん
2007/02/12(月) 11:22:58ぱっと見、直感的に見えるかもしれないけど、
変数で指定すると異様になるよ。
0036デフォルトの名無しさん
2007/02/12(月) 11:24:27作るなら別文法か?
0037デフォルトの名無しさん
2007/02/12(月) 11:56:460038デフォルトの名無しさん
2007/02/12(月) 12:04:04import std.metastrings;
template times(int n,char[]code){
const char[]times=
Format!(`cast(void)&null[
((){
for(int __dollar=0;__dollar<%s;++__dollar)
{%s};
}(),0)];`,
ToString!(n),
code);}
void main(){
mixin(times!(10,`printf("%d\n",$);`));
}
0039デフォルトの名無しさん
2007/02/12(月) 12:40:59foreach(i; 1..10)
write(i);
ってかけたらいいんじゃね?
0040デフォルトの名無しさん
2007/02/12(月) 12:55:050041デフォルトの名無しさん
2007/02/12(月) 13:16:28C#のpredicateみたいな。
そうなってくるとyield構文もほしくなる・・・。
0042デフォルトの名無しさん
2007/02/12(月) 15:47:35範囲型とブロックで(1..10).each(){ |i| hoge(i); }とか。
onApplyReverseとかforeach周りの妙な仕様が整理できるぜぇ。
0043デフォルトの名無しさん
2007/02/12(月) 16:05:390044デフォルトの名無しさん
2007/02/12(月) 17:20:04for(int i=0; i<n[0]; ++i)
yield(i);
}
void main() {
[10].times((int i){
printf("%d\n", i*i);
});
}
うそですごめんなさい
004544
2007/02/12(月) 17:24:25struct xrange {
int limit;
static xrange opCall(int limit) { xrange self; self.limit=limit; return self; }
int opApply( int delegate(inout int) dg ) {
for(int i=0; i<limit; ++i)
if(int r = dg(i))
return r;
return 0;
}
};
void main() {
foreach(i; xrange(10))
printf("%d\n", i*i);
}
0046デフォルトの名無しさん
2007/02/12(月) 17:44:19static Range t;
static this() { t = new Range; }
static Range opSlice( int n, int m ) {
t.start = n; t.end = m;
return t;
}
int opApply(int delegate(inout int) dg) {
int result;
for (int i = start; i < end; i++) {
result = dg(i);
if (result) break;
}
return result;
}
int start, end;
}
void main() {
foreach (i; Range[3..8])
writefln(i);
}
既出ですかそうですか
0047デフォルトの名無しさん
2007/02/12(月) 17:54:360048デフォルトの名無しさん
2007/02/12(月) 18:02:12>>47
インデント対応した2chブラウザ使えばいい。
0049デフォルトの名無しさん
2007/02/12(月) 18:03:17{
writefln("こうするのは面倒だしね");
return 0;
}
0050デフォルトの名無しさん
2007/02/12(月) 18:05:230051デフォルトの名無しさん
2007/02/12(月) 18:10:19置換するなら で良いんじゃ?
0052デフォルトの名無しさん
2007/02/12(月) 18:16:57困るのは Python とかかな
0053デフォルトの名無しさん
2007/02/12(月) 18:30:17それだと結局コピペ時には ってなるから、
 の方を使ってくれた方がありがたい。
0054デフォルトの名無しさん
2007/02/12(月) 18:31:24Range(2010, 2061).each((int i){ writefln(i); });
等々。
かなりRubyぽいところまで出来るけど、
やっぱりforeachキーワードや引数の呪縛から逃れたいなぁ。
0055デフォルトの名無しさん
2007/02/12(月) 21:05:11Jane使ってるんだけど実はできたりする?
0056デフォルトの名無しさん
2007/02/12(月) 22:04:490057デフォルトの名無しさん
2007/02/12(月) 22:48:37それ、遅いのよね。-O3 でも。
>>39 はいい感じの文法だと思う。
というか、それも妄想してたんだ、そういや。
0058デフォルトの名無しさん
2007/02/12(月) 23:00:101,2,3,...という連番アクセスが必要、
ってのはどういう状況があるだろうか。
ずるずると既存の機能を拡張してくのは
なんか微妙な感じがするから、もっと
個々の用途に即した形の機能が追加される
方がよい気がする。
0059デフォルトの名無しさん
2007/02/12(月) 23:21:59配列の要素数より少ないだけ回したいときとか。
0060デフォルトの名無しさん
2007/02/12(月) 23:30:44最適化も効くみたいだ。
0061デフォルトの名無しさん
2007/02/12(月) 23:45:45インデックスがずれるので面倒っちい
0062デフォルトの名無しさん
2007/02/13(火) 00:08:38前者はカウンタ要らないから指定回数実行の構文があればその方が直感的かなと思う。
>>61
それは使ってて結構強烈に感じた。
配列の一部だけ回すって結構需要ありそうな気がするんだが。まー具体例は思いつかん。
0063デフォルトの名無しさん
2007/02/13(火) 00:26:01もう片方のループの範囲を決めるのにそのインデックスが必要になるから、
そっちもずらさにゃいかんなる。
0064デフォルトの名無しさん
2007/02/13(火) 00:33:28foreach(j, n; array[0..i+1]) // ← ここで + 1 が必要
...
↓こっちの形なら不必要。ただ、j を使いたい場合にインデックスがおもっくそズレる。
foreach(i, n; array[0..array.length-1])
foreach(j, n; array[i+1..array.length])
...
0065デフォルトの名無しさん
2007/02/13(火) 00:49:39「モジュールにdelegate渡してコールバックしてもらう」に
型推論+無名デリゲートまで組み合わせれば
既にかなりのことが出来ると思うんだけど。
それでも残る問題は、パフォーマンスと微妙な読みづらさ?
# あと、foreach特別扱いされすぎだろと思う……
0066デフォルトの名無しさん
2007/02/13(火) 01:01:51パフォーマンスと書きやすさ読みやすさの両立は欲しいね。
現状は、foreach+スライスよりは、
for の方が読みやすいし使いやすい感じか?
0067デフォルトの名無しさん
2007/02/13(火) 01:05:530068デフォルトの名無しさん
2007/02/13(火) 01:09:570069デフォルトの名無しさん
2007/02/13(火) 01:28:38foreach(i, 0, 10, n; array) ...
こういうのでいい気がしてきた。
0070デフォルトの名無しさん
2007/02/13(火) 01:29:460071デフォルトの名無しさん
2007/02/13(火) 01:45:45foreach((i, j) : (0, 0)..(5, 10))
n次元ベクトルを走査できるぜw
0072デフォルトの名無しさん
2007/02/13(火) 02:29:13範囲指定があると、その範囲を引数に追加・・・という事になるんだろうけど、
int opApply(int delegate(inout size_t i, inout T n) dg, range rng) { ... }
この range がどちらの引数と対応しているかって問題がある。
先頭から対応させていくという制限をかければ、
rng は i と対応することになる。
そうすれば >>71 みたいなことが実現できそうだ。
class T[] { // 内部実装のイメージとして捉えて
int opApply(int delegate(inout size_t, inout T) dg, range rng) {
for(size_t i = rng.first; i <= rng.last; ++i) {
int res = dg(i, elems[i]);
if(res != 0) return res;
}
return 0;
}
}
n 次元の場合は foreach(i : 0..5, j : 0..10) ... としたのでいい気がする。
0073デフォルトの名無しさん
2007/02/13(火) 03:00:020074デフォルトの名無しさん
2007/02/13(火) 03:03:070075デフォルトの名無しさん
2007/02/13(火) 07:11:59}
int[] range(int a, int b){
int[] hoge = new int[b - a + 1];
for(int i = 0; i < hoge.length; i++){
hoge[i] = a + i;
}
return hoge;
}
0076デフォルトの名無しさん
2007/02/13(火) 07:24:520077デフォルトの名無しさん
2007/02/13(火) 07:39:34たとえば上で言ってるみたいに
foreach(i : 5..10, j : 3..5) {
...
}
こういう構文があったとしてそれを使った場合と
for(int i = 5; i < 10; i++)
for(int j = 3; j < 5; j++) {
...
}
という風に書いたのではやっぱり前者のほうがより効果的な最適化を期待できるの?
0078デフォルトの名無しさん
2007/02/13(火) 07:47:52あとは読みやすさや書きやすさ、学習しやすさや保守しやすさ等の問題。
for だと何度も同じ変数が出てきて、変数名変えるの面倒だとか、
初心者に意味を教えるのが面倒だとか、直感的じゃないとか、
まあ色々不満があるから、それを解消できればいいな、と。
0079デフォルトの名無しさん
2007/02/13(火) 07:52:34:
}
int[] range(int start, int end, int step = 1){
int[] array = new int[(end - start) / step + 1];
for(int i = 0; i < array.length; i++){
array[i] = start + i * step;
}
return array;
}
0080デフォルトの名無しさん
2007/02/13(火) 07:54:39opApply を持ったオブジェクトを返す実装にした方がいいけど、
それでも for には負ける。
0081デフォルトの名無しさん
2007/02/13(火) 08:05:52BASIC風の
FOR I = 1 TO 10 STEP 2
のほうがC式よりマシってことか?
効率面で言えば、ループの度に関数呼び出しが発生するような
方式は遅くて当たり前だろ。話にならない。
C式のforループなら比較、インクリメント、ジャンプしかしないし
ループカウンタがレジスタに乗ることが期待できるからな。
学習しやすさ分かりにくさってのは正直疑問なんだが。
Cのシンタクスが美的であるかどうかはともかく、Cの後継言語は
現実問題としてありふれてるし、皆使い慣れてるだろ。
別に言うほど分かりにくいわけでもないしな。
0082デフォルトの名無しさん
2007/02/13(火) 08:13:16for(range(0, 10, 2)){
}
0083デフォルトの名無しさん
2007/02/13(火) 08:13:430084デフォルトの名無しさん
2007/02/13(火) 08:30:53マシってこと。
効率面に関して話にならないのは当たり前じゃなくて、
opApply を使った方法が最大限 inline 化されて最大限最適化されれば
for ループと同じとこまで最適化される可能性はあると思う。
ただ、現状ではそこまで最適化されないようだし、
だからこそ「言語的に」サポートされて欲しいなあ、と。
あと、for 文がそんなにスバラシイんだったら
foreach 文なんて誰も同時に採用しない。
for 文がなくてもいいとは言わんが、
「もっと便利な方法考えられるけど、
使い慣れてるから使いにくくてもオーケー」
というのは、ガンガン機能アップしていこうぜ的な
D 言語の雰囲気と反するんじゃないかね。
0085デフォルトの名無しさん
2007/02/13(火) 08:32:560086デフォルトの名無しさん
2007/02/13(火) 08:33:56常識的に考えて。
0087デフォルトの名無しさん
2007/02/13(火) 08:41:57まじでコレ通るじゃん
ええんか?
0088デフォルトの名無しさん
2007/02/13(火) 08:49:42int foo(int hoge) { ... }
foo = 2; // foo(2); になる
プロパティじゃなくてもこうなるんだけど、
正直これってどうなんだろうな。
988 名前:デフォルトの名無しさん [sage] :2007/02/10(土) 01:33:11
プロパティとの明確な区別が無いから今のところはしょうがない
ということらしい。
ええんか?
0089デフォルトの名無しさん
2007/02/13(火) 09:12:46あえてそのコードを書く必要性もないわけだし
0090デフォルトの名無しさん
2007/02/13(火) 09:20:37そういや、Ruby の attr_accessor みたいに
プロパティを自動的に作ってくれるようなものはあるの?
0091デフォルトの名無しさん
2007/02/13(火) 09:30:31property int x(){
}
とかにしろと
0092デフォルトの名無しさん
2007/02/13(火) 09:34:410093デフォルトの名無しさん
2007/02/13(火) 09:34:50スパイの陰謀にしか思えない
0094デフォルトの名無しさん
2007/02/13(火) 09:53:190095デフォルトの名無しさん
2007/02/13(火) 09:57:160096デフォルトの名無しさん
2007/02/13(火) 10:04:300097デフォルトの名無しさん
2007/02/13(火) 10:17:55可読性とか重複の排除とかそういう点を追求したい。
速度なんてユーザが違和感を感じなきゃそれでイイ、って分野では、ね。
>>57
遅いのは仕方ない。スピード追求したけりゃ可読性を犠牲にして普通のfor使おう。
まぁ、気にするほど可読性落ちやしないさ。for文にはCから引き継いだ「慣れ」があるし。
あと、>>39は確かに可読性はイイが、文法を拡張するとなると、そこまでは……と思う。
というか、みんなforeachステートメント前提に考えすぎじゃないか?
foreachの基礎になってるのはdelegateのパラメータ渡しなんだから、
その際に利用者にdelegateキーワードを見せない、って方向の方がいい。
Let's言語拡張妄想。
Range[2004..3000].step(4) : (int year){ // Rangeオブジェクトは>>46を拝借
orimpicPlaceTable[year].doOrimpic();
}
class Range{
void step(int stepValue, void delegate(int) yield){ /* 実装略 */ }
// いっそ void step(int stepValue) : (void delegate(int) yield){ /* */ } てのも……
}
0098デフォルトの名無しさん
2007/02/13(火) 10:29:28こっちでは foreach 使って、
こっちでは似た処理だけど foreach 使えないから for 使って、
っていう風な場合もかな。
統一性がないというか何というか。
使い分けに深い意味があるのかと思いきや、
言語的な制限から仕方なく、とかなるのがね。
>foreach前提
単なる回数ループだと foreach にする必然性はないかもしれないけど、
配列の一部だけ foreach したい場合とかは foreach にする必然性はあるね。
別のものをもってくると、可読性が落ちるけど、
かといって現状の foreach だとスライスするしかなくて、
それだと 0 からスライスする場合でないとインデックスがずれてしまって・・・と。
009997
2007/02/13(火) 10:42:13>>84
私ゃコンパイラの最適化実装なんてさっぱりなんですが、
ホントに最大限のinline化とか期待できるんでしょか。
onApplyが受け取るのがdelegateである以上
delegateをinline展開せにゃならんってことだと思うのだけど、
何となく、それは難しい事だと思ってたんですが。
# それでも、Walterならきっと何とかしてくれる……! とかちょっと期待も。
0100デフォルトの名無しさん
2007/02/13(火) 10:45:58そして、それを要求するよりは、言語的に実装する方が楽そうだ、と。
0101デフォルトの名無しさん
2007/02/13(火) 11:00:56orimpicPlaceTable[year].doOrimpic();
};
ってね。
できなくもなさそう。テストはしてない。
要はdelegateを渡すのに
func({
Statement;
});
こんな{}のが邪魔なだけだと思った。
0102デフォルトの名無しさん
2007/02/13(火) 11:01:50rubyだとArrayのeachとeach_indexが微妙に統一感がない。each_with_indexとかさらに。
0103デフォルトの名無しさん
2007/02/13(火) 11:20:47何か Ruby のイテレータっぽいね。
類する文法は作れそうな予感。
今でも似た事は無理矢理できそうだけど。
>>102
まあ、Ruby は動的型言語で
オーバーロードできないからね・・・。
そのあたりは仕方がない気がする。
まあ、引数の個数で呼び分けくらいはして欲しいんだけど。
0104デフォルトの名無しさん
2007/02/13(火) 11:25:5110..20の部分、やはりrange型か何かに切り出して欲しいな。組み込み型として。
範囲を表すのに直感的でいい記法なのに、配列のインデックスにしか使えないのは勿体ない。
あと>>67も含めて。やっぱ10..20のとき20は含まないべきだよなァー。
0105デフォルトの名無しさん
2007/02/13(火) 11:32:20書けるんだけど、sliceIndex は 0〜10 になって、10〜20 にはならない。
最適化もちゃんと効いて高速なんだけどなあ。
0106デフォルトの名無しさん
2007/02/13(火) 11:35:50struct Times {
int n;
void opShr(void delegate(int) yield) {
for(int i = 0; i < n; ++i) {
yield(i);
}
}
}
Times times(int n) {
Times t;
t.n = n;
return t;
}
void main() {
times(5) >> (int i){
writefln("%d", i);
};
}
うほっ
0107デフォルトの名無しさん
2007/02/13(火) 11:37:00foreach (i=3, v; arr[3..8])
writef(i," ",v,";");
-> 3 3; 4 4; 5 5; ...
と妄想
0108デフォルトの名無しさん
2007/02/13(火) 11:42:57そこは static opCall で作ろうぜ
0109デフォルトの名無しさん
2007/02/13(火) 11:43:49opCall でプロパティになるかと思ったら
ならなかったんだよー。
0110デフォルトの名無しさん
2007/02/13(火) 11:44:32オーバーロード専用でも良いから。
0111デフォルトの名無しさん
2007/02/13(火) 11:49:38いけそうでいけない気がする……。
記法としてはとても良い感じなんですが。
演算子オーバーロードじゃ理想的な演算子無いし、
無理矢理あてたとしても末尾に}();なんて付いちゃいそう。
>>103
Rubyのイテレータはいいものだと思うです。
今じゃ”ブロック付き呼び出し”のが主流の呼び方っぽいけど。
Dでもdelegate引数が()の外に飛び出せさえすれば、
同じ表記(Dらしく型表記は付くけど)ができるんだけど……。
0112デフォルトの名無しさん
2007/02/13(火) 11:51:19そこで代入形式で呼び出すプロパティなんですよ
0113デフォルトの名無しさん
2007/02/13(火) 11:55:15import std.stdio;
struct IntEx {
int value;
void times(void delegate(int) yield) {
for(int i = 0; i < value; ++i) {
yield(i);
}
}
}
IntEx ex(int value) {
IntEx ex;
ex.value = value;
return ex;
}
void main() {
ex(5).times = (int n){
writefln("%d", n);
};
}
0114デフォルトの名無しさん
2007/02/13(火) 12:03:42あ、なるほど……。代入すると見せかけて、受け取ったdelegateを呼び出すのか。
わーい、超バッドノウハウ。でもそれがグッドな言語仕様に化けてくれれば儲けモノかな。
0115デフォルトの名無しさん
2007/02/13(火) 12:06:56int n, m, s;
static Times opCall(int n) { return Times(0, n); }
static Times opCall(int n, int m, int s=1) {
Times t;
t.n = n; t.m = m; t.s = s;
return t;
}
void opShr(void delegate(int) dg) {
for(int i=n; i < m; i+=s)
dg(i);
}
alias opShr opShl_r;
}
void main() {
Times(5) >> (int i) {
writefln("%d", i);
};
(int i) {
writefln("%d", i);
} << Times(10, 15);
}
自分でワロてしまった
0116デフォルトの名無しさん
2007/02/13(火) 12:08:400117デフォルトの名無しさん
2007/02/13(火) 12:09:170118デフォルトの名無しさん
2007/02/13(火) 12:14:49struct If {
bool b;
static If opCall(bool b) {
If i;
i.b = b;
return i;
}
void opShl_r(lazy void yield) {
if(b) yield;
}
}
void main() {
writefln("false") << If(false);
writefln("true") << If(true);
}
キモイヨー
0119デフォルトの名無しさん
2007/02/13(火) 12:16:11書けはするんだ……でもarray[10..20]を評価した時点で
10と20の値は忘れられちゃうもんなぁ。
ああ、この堪らないなもどかしさ。Walterはやはり焦らしプレイの天才なのか。
0120デフォルトの名無しさん
2007/02/13(火) 12:17:39writefln("true") in If(true);
とか
余計キモイか
0121デフォルトの名無しさん
2007/02/13(火) 12:18:480122デフォルトの名無しさん
2007/02/13(火) 12:20:46最後に置いた delegate を呼ぶための演算子があればいいんだよね。
上がってる候補は : だったり = だったりなんだが、
Walter タンのこだわってる解析の楽さ的には
: はラベルかどうかのチェックが必要になる場合がありそうだから無理そうだな。
= はプロパティあたりをいじくればできそうだけど、どうなんだろうか。
do はアリかも。キーワード追加しなくていいし。
0123デフォルトの名無しさん
2007/02/13(火) 12:27:09しかし、何となくフォースの暗黒面に囚われかけてる感覚があるw
演算子オーバーロードは原則、元の意味から逸脱しない範囲で行うこと。
悪い子のみんな、Walterとの約束だ!
0124デフォルトの名無しさん
2007/02/13(火) 12:29:23いや、必ず括弧を書く必要があれば、
ラベルとの混同はなしでいけるか。
Ruby やプロパティの癖で括弧無しで考えてしまった。
>>123
実用はしたくないけど、遊びで使う分には面白すぎるw
これはヤバいね。
0125デフォルトの名無しさん
2007/02/13(火) 12:29:31times(5)~(int i){
hoge(i);
};
な感じが好きだな。
0126デフォルトの名無しさん
2007/02/13(火) 12:33:27良さげなのがありすぎて、
逆に危険な香りがプンプン匂ってくるw
0127デフォルトの名無しさん
2007/02/13(火) 12:33:31いっそ記号無しは……無理、か? 読みづらいか。
0128デフォルトの名無しさん
2007/02/13(火) 12:33:500129デフォルトの名無しさん
2007/02/13(火) 12:37:350130デフォルトの名無しさん
2007/02/13(火) 12:37:48これ使えば = もいけるな・・・。
0131デフォルトの名無しさん
2007/02/13(火) 12:47:320132デフォルトの名無しさん
2007/02/13(火) 12:50:24in 使うなら If じゃなくて case にしたら良さげだなw
0133デフォルトの名無しさん
2007/02/13(火) 12:59:46struct case_that {
bool b;
static case_that opCall(bool b) {
case_that i;
i.b = b;
return i;
}
void opIn_r(lazy void yield) {
if(b) yield;
}
}
void main() {
writefln("false") in case_that(false);
writefln("true") in case_that(true);
}
おおお。これくらいは使っていいんじゃという誘惑に駆られそうだ。
0134デフォルトの名無しさん
2007/02/13(火) 13:06:04struct Times {
static int index;
static void opSliceAssign(lazy void v, size_t x, size_t y){
for(index=x; index < y; index++)
v();
}
}
void main() {
Times[10..20]=(
writefln(Times.index),
writefln(Times.index*2) );
}
良く解らないけど、とても気持ち悪いです。はい。
0135デフォルトの名無しさん
2007/02/13(火) 13:07:190136デフォルトの名無しさん
2007/02/13(火) 13:10:400137デフォルトの名無しさん
2007/02/13(火) 13:19:29doはキーワード増やさない点、あとRubyと同じだという点もナイスだけど、
場所によってキーワードの意味が違う、となるとちょいと嫌だな。
かつてのautoとscopeのようなことにならなきゃいいが。
でも案外、do-whileのdoと似てると解釈も出来るか……?
0138デフォルトの名無しさん
2007/02/13(火) 13:22:38struct range {
static void opSliceAssign(void delegate(size_t i) yield, size_t x, size_t y) {
for(size_t i = x; i < y; ++i) yield(i);
}
}
struct times {
static void opIndexAssign(void delegate(size_t i) yield, size_t n) {
for(size_t i = 0; i < n; ++i) yield(i);
}
}
void main() {
range[3..10] = (size_t i) {
writefln(i);
};
times[5] = (size_t i) {
writefln(i);
};
}
そういや、continue は return で代用できるとして、break が使えないや。
何か値を返すようにするのも面倒だし、限界はあるやね。
>>137
一応「イテレータ」を指向するという名目なら、
ループするということで do は意味的にオーケー?
まあ、Ruby のイテレータよろしく、
結局そこから逸脱した使われ方もされるだろうけど。
0139デフォルトの名無しさん
2007/02/13(火) 13:30:51do-whileで「ループ」のニュアンス持ってるのはwhileの方だから、
doだけならループに使われなくても問題無いんじゃないかな。
直訳したって「する」でしかないんだし。
0140デフォルトの名無しさん
2007/02/13(火) 13:45:40>そういや、continue は return で代用できるとして、break が使えないや。
break用の例外を投げるという荒業はどうだろう。気持ち悪いと言えばそれまでだけど。
0141デフォルトの名無しさん
2007/02/13(火) 13:46:19つまり、こんな妄想が・・・
import std.stdio;
void times(size_t n, int delegate(size_t i) yield) {
for(size_t i = 0; i < n; ++i) {
int res = yield(i);
if(res != 0) return;
}
}
void main() {
times(5) do (size_t i) {
writefln(i);
}
}
まあ、{ } 内で break, continue, return の意味が変わるというあたり、
どう実装するのかというのが気になるところか。
0142デフォルトの名無しさん
2007/02/13(火) 14:21:09他の代用にされてしまうと困るかも。
char[][] titles = books.collect() do (Book book){
return book.title;
};
opApplyはbreakとかサポートするために、
どうにも妙な作りになっちゃってるんだよね・・。
正直、Exception使ったほうがマシだった気がする。
Rubyじゃどう解決してたか、詳しい人いる?
0143デフォルトの名無しさん
2007/02/13(火) 14:27:02times(size_t i;5){
writefln(i);
}
んでopApplyと同様にopStatementに対応して欲しい。
0144デフォルトの名無しさん
2007/02/13(火) 14:40:29delegate じゃなくて yield という特別なキーワード使ってるから
Ruby だとそこんところどうにでもなる。
0145デフォルトの名無しさん
2007/02/13(火) 14:45:41C#でいうとyieldね。
0146デフォルトの名無しさん
2007/02/13(火) 15:02:46マイクロスレッドの代わりにもなる?
0147デフォルトの名無しさん
2007/02/13(火) 15:04:060148デフォルトの名無しさん
2007/02/13(火) 15:44:05それマイクロスレッド。
0149デフォルトの名無しさん
2007/02/13(火) 16:12:31statement LinkedForeach{
private int i;
private Collection src;
private Collection dest;
public LinkedForeach(Collection src, Collection dest)
{
this.src = src;
this.dest = dest;
}
public bool next(out Items items)
{
this.i++;
if(this.src.length < this.i && this.dest.length < this.i)
{
items = new Items(this.src[this.i], this.dest[this.i]);
return true; // 継続
}else
{
return false; // 終了
}
}
}
-----
void functionX(Collection c, Collection d){
LinkedForeach(Items items; c, d)
{
// c, dのi番要素への操作が繰り返しで可能
}
}
0150デフォルトの名無しさん
2007/02/13(火) 16:14:100151デフォルトの名無しさん
2007/02/13(火) 17:51:140152デフォルトの名無しさん
2007/02/13(火) 17:51:33hoge(x, y, z) do|int x, int y|
...
end
どうみてもRubyです。
しかし盛り上がりすぎワロタw
0153デフォルトの名無しさん
2007/02/13(火) 20:40:42明らかに人柱版としか思えないんですけどwwwww
0154デフォルトの名無しさん
2007/02/13(火) 20:51:12正式版も何も、単にバージョンが1になったというだけの話でしょw
0155デフォルトの名無しさん
2007/02/13(火) 21:05:470156デフォルトの名無しさん
2007/02/13(火) 21:20:10hoge(x, y, z) do (int x, int y) {
...
}
でいいんじゃねえの?
パイプって左右の区別なくて気持ち悪い。
0157デフォルトの名無しさん
2007/02/13(火) 21:56:47if(line == "---EndOfScript---"){ break; }
if(line.startWith("#")){ continue; }
return line;
};
class File{
static char[][] collectLines(char[] filePath) do (char[] delegate(char[]) yield){
char[][] result;
open(filePath) do (File file){
while(!file.eof){ result ~= yield(file.readLine()); }
}
return result;
}
static void open(char[] filePath) do (void delegate(File) yield){
File file = new File(filePath); scope(exit){ file.close(); }
yield(file);
}
}
/* コンパイラは、delegateの呼び出しが行われるのがwhileやforの中のみと判断した場合に限り、
そのdelegate内でのbreak、continueを許します。それらが行われた場合、delegateの実行は中断され、
delegate呼び出しから最も近いforやwhileに対してbreak、continueが行われたものとして処理されます。 */
妄想が窮まってきたので、いい加減もう寝ます……。
0158157
2007/02/13(火) 22:09:33/* 検討事項: ... do (loop char[] delegate(char[]) yield){ ... のようにloopキーワードを付けるなどして、
delegate引数の宣言の側でbreak、continue可能なことを明示すべきかもしれません。
この場合、この`yield`はwhileやforの中で呼び出さない限りコンパイルエラーになることになります。 */
今度こそ寝る。
0159デフォルトの名無しさん
2007/02/13(火) 22:25:00「関数呼び出し do 関数リテラル」って形だな。
doを既存の演算子に置き換えて、
その演算子をオーバーロードしたクラスを関数呼び出しが返せば、
「関数呼び出し 演算子 関数リテラル ;」という形にはなりそう。
その場合、文じゃなくて式だけど。
0160デフォルトの名無しさん
2007/02/13(火) 23:16:440161デフォルトの名無しさん
2007/02/13(火) 23:34:45我々にはopDoが必要だ。
0162デフォルトの名無しさん
2007/02/14(水) 05:40:330163デフォルトの名無しさん
2007/02/14(水) 05:57:510164デフォルトの名無しさん
2007/02/14(水) 06:31:20教えやすいとか思ってないよな?
しかも性能が劣るのは確実
単なるジャンプに過ぎないbreakやcontinueの代わりに例外なんて
論外もいいところ
馬鹿じゃないの?ただのオナニーじゃん
0165デフォルトの名無しさん
2007/02/14(水) 06:39:54おまいばかじゃね?
ネタだとしても、折角do使ってキーワード増やさない様にしてるのに何してんだ。
そんなんなら最初から新たな構文作るだろ。
0166デフォルトの名無しさん
2007/02/14(水) 06:41:12仕様いじくりまわして使えなくしてしまおうという
スパイの陰謀にしか思えない
0167デフォルトの名無しさん
2007/02/14(水) 06:44:170168デフォルトの名無しさん
2007/02/14(水) 06:52:10Japanese
0169デフォルトの名無しさん
2007/02/14(水) 06:52:260170デフォルトの名無しさん
2007/02/14(水) 07:43:560171デフォルトの名無しさん
2007/02/14(水) 08:03:36全部ネタなんだぜ
0172デフォルトの名無しさん
2007/02/14(水) 08:20:550173デフォルトの名無しさん
2007/02/14(水) 09:11:02・・・なんで?
もしかして、writefだとUTF-8通らないのか?
0174173
2007/02/14(水) 09:11:560175デフォルトの名無しさん
2007/02/14(水) 09:25:140176デフォルトの名無しさん
2007/02/14(水) 11:44:200177デフォルトの名無しさん
2007/02/14(水) 12:01:41一口に速度と言っても、みんなどれくらいのをイメージしてるんだ?
俺は元々Java/Webな人間だし、個人的に作りたいモノも大抵Winアプリだしで、
停止時間が0.3秒くらいに収まればいいかな、くらいに思ってるけど。
だからforよりパフォーマンス落ちるとか程度は、(多分)全然許容範囲。
やっぱゲームとかリアルタイム処理な人は、
1万回のループが1/60秒以内に収まらなきゃ論外(数値は適当)、
delegateとか話にならん、て感じなんだろか。
0178デフォルトの名無しさん
2007/02/14(水) 12:58:51ループ箇所の処理時間はボトルネックになりやすいという
一般論を前提にして今の話は進行してたんだろ
0179デフォルトの名無しさん
2007/02/14(水) 13:04:37たしかにそうみたいだな
import std.stdio;
void main()
{
printf("ほげほげ");
writef("ほげほげ");
}
で、ちゃんと表示されてるから。
でも、なんでちゃんと表示できなかったんだろう・・・>htmlget.d
0180デフォルトの名無しさん
2007/02/14(水) 13:17:42GC関係じゃね?<停止時間
0181デフォルトの名無しさん
2007/02/14(水) 13:30:43別に性能がどうでもいいんならVM言語やスクリプト言語でいいし
って話じゃねーの?
画像データをピクセル単位で弄くったりすることを考えると
遅いループなんて使う気にならないよ、少なくとも俺は。
0182デフォルトの名無しさん
2007/02/14(水) 13:47:42停止時間は例えば「ユーザがメニューから項目を選択してから、
再びユーザに制御が戻るまでの時間」くらいのつもりだった。
>>181
性能がどうでも良いとしても、Dは結構魅力的だと思うけど。
ランタイム要らずで起動の早い単体exeを作れる、かつC/C++より幾分モダンだし。
とゆーか、ごめん。なんか分かり切った事を聞いた気が自分でもしてきた。
0183デフォルトの名無しさん
2007/02/14(水) 14:46:30# 実用に使えるかどうかはプログラマの腕次第
0184デフォルトの名無しさん
2007/02/14(水) 15:00:48複雑な制御構造やありがちな制御構造をモジュール化して、
名前を付けられるって点がありがたいなぁ、と思う。
0185デフォルトの名無しさん
2007/02/14(水) 15:13:57意外と、会計処理でも、5時間かかるか、4時間で済むかは大問題だったりする。
夜間バッチのスケジュールが有って、会計処理なんて今時古いとか言われても、
必要なもんなんだし、お前らみたいにお絵かきやエロやってる訳じゃなく、従業員
が1万人関連取引先含めると20万人、顧客まで含めると100万人規模の、会社
にとっては、本当に死活問題。
0186デフォルトの名無しさん
2007/02/14(水) 15:18:17www.google.co.jpはuser agentを見てUTF-8返したりShift_JIS返したりしてた気が。
たぶんSJISで送られてきてる。
0187デフォルトの名無しさん
2007/02/14(水) 15:43:07つかさ。
普通にprintfで書き出して
hoge.exe > tmp.txt
でtmp.txtの文字コード調べりゃ済んだはずだよな
0188デフォルトの名無しさん
2007/02/14(水) 15:48:27それ以外の速度が死活問題にならない人は短くてわかりやすい構文が使えるってのでいいんじゃないかな。
コンパイルはもともと激速なんだし構文増えてもそんなに遅くはならないと思うし。
0189デフォルトの名無しさん
2007/02/14(水) 16:23:46それはもったいないとおも
0190デフォルトの名無しさん
2007/02/14(水) 16:45:38ガンガレWalterタソ!
0191デフォルトの名無しさん
2007/02/14(水) 16:59:480192デフォルトの名無しさん
2007/02/14(水) 17:01:40ここらで直交性について触れておくべきだろうか。
まぁDはとっくに醜悪な恐竜になりつつあるがな。C++のように。
0193デフォルトの名無しさん
2007/02/14(水) 17:12:22ググって見たら軍事用語かいな。どういう喩えなのかさっぱり解らんw
>>192
STLだと型、データ構造、アルゴリズムだっけ。
Dが醜くなりつつあるというなら、どっかを削るべき?
0194デフォルトの名無しさん
2007/02/14(水) 17:21:11muzzle-loadingは先込め式銃で銃口から玉を込める銃のこと。
そしてsmoothboreはライフリングがない銃の事らしい。
とりあえず火縄銃なのかな?
0195デフォルトの名無しさん
2007/02/14(水) 17:26:15なるほど、obsoluteだな
0196デフォルトの名無しさん
2007/02/14(水) 17:34:460197デフォルトの名無しさん
2007/02/14(水) 17:36:100198デフォルトの名無しさん
2007/02/14(水) 17:43:37・ foreach(i : 1..array.length, n; array) { ... }
ってできたら、インデックスもズレないし、便利だよね?
・ ついでに
foreach(i : 0..TIMES) { ... }
ってできてもいいんじゃね?
・ それとは別に、Ruby のイテレータみたいなの欲しいな。
times(5) do (size_t i) { ... }
void times(size_t n, int delegate(size_t) yield) { ... }
みたいな。
0199デフォルトの名無しさん
2007/02/14(水) 17:44:36強力で設計の良いライブラリも持ちたいという意志はあるのねw
頑張れWalter! 出来れば「標準」ライブラリで頼むぜ!
0200デフォルトの名無しさん
2007/02/14(水) 17:46:57>強力で設計の良いライブラリ
boostはそんなライブラリじゃない訳だが。
0201デフォルトの名無しさん
2007/02/14(水) 17:48:390202デフォルトの名無しさん
2007/02/14(水) 17:49:35Walterはboostを持ちたいと言っている訳じゃないんだからいいんじゃね?
0203デフォルトの名無しさん
2007/02/14(水) 17:52:260204デフォルトの名無しさん
2007/02/14(水) 17:53:56既にtupleとかbindとか標準ライブラリでサポートされてきてるじゃん。
0205デフォルトの名無しさん
2007/02/14(水) 17:54:41そのあたりHaskellだとキレイにかけそう。
0206デフォルトの名無しさん
2007/02/14(水) 17:55:59C++0xで採用される予定のtr1はboostが基になってるのが多いね。
0207デフォルトの名無しさん
2007/02/14(水) 18:04:070208デフォルトの名無しさん
2007/02/14(水) 19:30:05boostの「実装コードが」時代遅れに見えるくらいにしたい、じゃね。
boostと同じ(or以上の)レベルの事を、もっと奇麗なコードで出来る言語仕様を……
というニュアンスとも。
0209デフォルトの名無しさん
2007/02/14(水) 20:33:13俺にもそう読めた
boostライブラリを言語仕様で実現したいんじゃないの
0210デフォルトの名無しさん
2007/02/14(水) 22:02:34Boostみたいなライブラリをダーティハック(とかいったらC++の人に叱られそう)なしで出来るようにしたいって話では。
0211デフォルトの名無しさん
2007/02/14(水) 22:13:580212デフォルトの名無しさん
2007/02/14(水) 22:25:590213209
2007/02/14(水) 22:40:39よく読んでみたら確かに微妙に違ったみたい
ニュアンスを完全には把握できてないや
ところでさあ
TangoってErrorクラスがなくなってたりして
dfl(dwtも?)と一緒に使うことができないっぽいんだがどうしようもないのかこれ
0214デフォルトの名無しさん
2007/02/15(木) 09:26:230215デフォルトの名無しさん
2007/02/15(木) 10:20:57? ふつうにvoid copy(char[] from, char[] to); が載ってるが。
0216199
2007/02/15(木) 10:33:07boostを思い出してみるに、確かに何となく違った気がする。
C++の言語仕様ならこれだけのことが可能なんだから、
これくらいは基礎として入っているべきだ、て感じ? 実際>>206な話だし。
GUIに通信にXMLにと何でも最初から入ってる、Javaみたいな意味での”強力”さってのは、
Dの標準ライブラリでは目指して無さそう? それはそれでいいのだけど。
0217デフォルトの名無しさん
2007/02/15(木) 11:33:55標準ライブラリにバイナリ本体を載せなくても、標準的なインターフェースは定義予約しておいてほしいと思う。
0218デフォルトの名無しさん
2007/02/15(木) 13:05:53あぁ、本当だ
よくよく見たらcharset=Shift_JISになってたわ
0219デフォルトの名無しさん
2007/02/15(木) 20:28:59COMを扱うライブラリを、紹介してもらえないですか?
出来れば、スクリプト並みに楽に扱えるものだと嬉しいです
あー、DもCOMも検索しづらい
0220デフォルトの名無しさん
2007/02/15(木) 23:33:380221デフォルトの名無しさん
2007/02/16(金) 00:54:15この流れ、おもしろすぎwwww
はたから見てて、久々にD言語使いたくなったwwww
0222デフォルトの名無しさん
2007/02/16(金) 02:18:210223デフォルトの名無しさん
2007/02/16(金) 02:24:25うらおの奴が作ってたような・・・。
0224デフォルトの名無しさん
2007/02/16(金) 02:33:01使用メモリを自分で決めるのと例外が投げられないのがちょっと気になる。
0225デフォルトの名無しさん
2007/02/16(金) 02:46:26あー確かにそうだったな・・・。
でもスタックって最初からサイズ決まってるんじゃないっけ。
0226デフォルトの名無しさん
2007/02/16(金) 03:35:21Feb 15, 2007
New/Changed Features
* Added -Jpath switch, which is now required in order to import text files.
* Enhanced -v output to include actual filename.
* name string for TypeInfo_Struct now part of the TypeInfo_Struct comdat.
* Compile time execution of functions
0227デフォルトの名無しさん
2007/02/16(金) 03:42:17コンパイル時ユニットテストが・・・!!
0228デフォルトの名無しさん
2007/02/16(金) 10:34:50定数要求されてるところに関数書いておくと、それが
いくつかの条件をみたす関数ならコンパイル時に実行しとくよ、
という話で、ユニットテストとはちょっと違う気が
0229デフォルトの名無しさん
2007/02/16(金) 12:00:35MyArray!(Person) children = new MyArray!(Person)();
}
とか、ひょっとして通るようになったんでせうか。
0230229
2007/02/16(金) 12:44:320231デフォルトの名無しさん
2007/02/16(金) 13:24:14コンパイル時実行で解決できるわきゃなかったか……。スレ汚し失礼。
0232デフォルトの名無しさん
2007/02/16(金) 16:00:13GCが自動的に動いたときに Error: Thread error: cannot pause とかいってデッドロックしてしまう
これはphobosかなんかのバグ?
0233デフォルトの名無しさん
2007/02/16(金) 17:41:38どういう順番でどう停止させているのか、あたりに問題が潜んでる可能性はあるかも。
ただ、普通にデッドロックが発生する設計になっちゃってるせいじゃないか?
という疑念がひしひしと。同期の設計を慎重に見直してみたら?
0234デフォルトの名無しさん
2007/02/16(金) 18:09:04これかな?
0235デフォルトの名無しさん
2007/02/16(金) 19:05:41というか書き直したほうがいいなこれ
Walterタンがんばって><
0236デフォルトの名無しさん
2007/02/17(土) 01:44:30ひどい奴だな、そこまでわかってるなら手伝ってやれよ。
つか別インプリメントして投稿ってのはナシなの?
0237デフォルトの名無しさん
2007/02/17(土) 01:57:01だれかえろいひと見てもらえると助かる
http://grugru.mine.nu/file.cgi?v=guru_guru_2560.zip
0238237
2007/02/17(土) 02:07:30void wait(uint milliseconds)
のほう変更し忘れた
0239237
2007/02/17(土) 02:41:23イベントのあたりがいろいろ間違ってたのをなおしました
0240デフォルトの名無しさん
2007/02/17(土) 21:30:04テンプレートクラスA(T)とクラスBがあったとして、
A!(B)のオブジェクトのclassinfoをたどって、
Tの(ここではB)のClassInfoなりTypeInfoって取得可能?
0241デフォルトの名無しさん
2007/02/17(土) 21:53:220242デフォルトの名無しさん
2007/02/17(土) 22:26:490243デフォルトの名無しさん
2007/02/17(土) 23:29:10乙
しかし俺には評価できない罠
どういう問題が解決されているのかな
0244デフォルトの名無しさん
2007/02/17(土) 23:46:11http://f17.aaa.livedoor.jp/~labamba/?BugTrack%2F26
たぶんこれが直ってるのと、スレッドハンドルがどんどんリークしていたのを修正しました
0245デフォルトの名無しさん
2007/02/18(日) 01:25:19classinfo.nameはコンパイル時定数じゃないから…
0246デフォルトの名無しさん
2007/02/18(日) 02:13:13>>234で絶賛放置中のBugであり>>232の原因の疑いアリという代物じゃないっすか。
問題ないならcommitして欲しいくらいですねぇ。
私ゃ評価も翻訳もできない身ですけど・・。
0247デフォルトの名無しさん
2007/02/18(日) 02:58:27クソワロタ
身に覚えがあるし・・・
0248デフォルトの名無しさん
2007/02/18(日) 09:11:54import std.stdio;
class A(T){}
class B{}
template TypeOfA( T )
{
static if( is(T U : A!(U)) )
alias U TypeOfA;
else
alias void TypeOfA;
}
int main()
{
alias A!(B) A_B;
writefln( typeid( TypeOfA!(A_B) ) ); // modulename.B
return 0;
}
こんなんじゃだめ?
0249240
2007/02/18(日) 10:35:53A_Bの型からじゃなくて、A_Bのオブジェクトから取得可能か、知りたいんだよね。
Dっぽくなくて恐縮なんだが。
>>241のゆうように無理っぽそうだが。(�dクス)
0250デフォルトの名無しさん
2007/02/19(月) 01:35:01hoge.dとsdltest.dっていう名前のソースが二つあって、
以下のようにコンパイルすると、sdltest.dのほうだけ128が返るんだが・・・どうしてだろう?
この128はdmdが返してるのか、SDLが返してるのか・・・それすらも分からないorz
%dmd hoge.d SDL.lib #SDL.libはあらかじめPATHが通ってる
%dmd sdltest.d SDL.lib
ソースは以下の通り
import std.stdio;
import SDL
int main(char[][] args)
{
if (SDL_Init(SDL_INIT_VIDEO))
throw new Error("Could'nt initialize video");
printf("hello,SDL!");
return 0;
}
0251デフォルトの名無しさん
2007/02/19(月) 01:36:24もう寝る。
0252デフォルトの名無しさん
2007/02/19(月) 01:37:51if (SDL_Init(SDL_INIT_VIDEO)) > if (SDL_Init(SDL_INIT_VIDEO) < 0)
でした・・・
こんどこそ寝る。
0253デフォルトの名無しさん
2007/02/19(月) 01:50:54おし、原因分かったから寝る。
0254デフォルトの名無しさん
2007/02/19(月) 01:52:030255デフォルトの名無しさん
2007/02/19(月) 03:34:230256デフォルトの名無しさん
2007/02/19(月) 03:45:00GCが動いたときにSIGUSERが発生してacceptとかreceiveがEINTRで抜けてくるから
期待してるブロッキングモードの利点があんまり無い(´・ω・)
0257デフォルトの名無しさん
2007/02/19(月) 11:23:05implibとか使ってDLLからインポートライブラリ作ろうとしても、
なんか現状、すんなりとできないよね?
extern(Windows)つけた関数がDのマングリング受けてて、リンカでコケまくり。
呼び出し規約とマングリングの区別で俺の頭が混乱してくる始末。
extern(Windows)な関数て、"FunctionName@8"みたく
マングリングされてくれなきゃいかんのでは……?
0258257
2007/02/19(月) 12:12:51extern(Windows)使うと"_FunctionName@8"みたいなマングリングがされて、
DLLの方は素直に"FunctionName"みたいなエクスポート名になってるのに困るなぁ、
ということだった。
0259デフォルトの名無しさん
2007/02/19(月) 13:21:440260デフォルトの名無しさん
2007/02/19(月) 15:35:140261デフォルトの名無しさん
2007/02/19(月) 21:43:13あい。だからdefファイル作ったんだけども、やっぱりメンドイなぁ、て。
特に@以降の引数のサイズ表す数字が。
htodで.dファイル作って、
そこに含まれる関数定義を関数呼び出しコードに変換するスクリプトなんて書いて、
それをdmdに食わせてリンカにエラーメッセージ出力させて、
それをパースしてdefに変換するスクリプトなんて書いて……とか。
なんだかとても無駄なことをしてる気が。誰かいい方法知りません?
0262デフォルトの名無しさん
2007/02/20(火) 00:31:08signalでも抜けちゃうから、結局なんかやらないといけないけどな
0263デフォルトの名無しさん
2007/02/20(火) 00:36:48recvのwraper作ってEINTRを無視すれば良いんじゃないの?
0264デフォルトの名無しさん
2007/02/20(火) 02:57:13receiveとかsendはラッパ作れば問題ないけど、acceptの返り値がSocketなのがマズー
ラップクラスでオーバライドした関数を使ってくれない orz
acceptで返ってきたSocketのソケットディスクリプタだけコピーして、
自分のクラスにセットしようと思ってもモジュール外だからSocketのprivateにアクセスできないし。
結局ほとんど全部自前で作るはめに(´・ω・`)
phobosの方でなんとかしてもらえれば助かるんだけど。。
0265デフォルトの名無しさん
2007/02/20(火) 10:36:58acceptingをオーバーライドすればacceptで自前のSocketクラスを返せたはず
0266デフォルトの名無しさん
2007/02/20(火) 12:59:45キター できました。ありがとうございます
一生懸命 *((cast(int*)newSock)+2) = *((cast(int*)sock)+2);
とかやってたのは内緒
0267336
2007/02/21(水) 13:52:55Feb 20, 2007
・Comparison operators are no longer associative; comparison, equality, identity and in operators all have the same precedence.
・out and inout parameters are now allowed for compile time function execution.
・The .dup property is now allowed for compile time function execution.
・Updated lib to insert COMDATs into symbol table.
・Class references can no longer be implicitly converted to void*.
0268デフォルトの名無しさん
2007/02/21(水) 15:08:40Feb 20, 2007
・ 比較演算子を結合できないようにしました。比較に関する演算子は全て同じ優先順位になります。
(a < b == c とか書けないようになった。
どうしてもやりたい場合は多分 (a < b) == c でイケるんじゃないかと。
c が bool だとありうるよね、一応)
・ out と inout 引数があっても、コンパイル時に関数を実行できるようになりました。
・ .dup プロパティがコンパイル時に実行できるようになりました。
・ COMDAT を lib のシンボルテーブルに含めました。
・ クラスの参照を暗黙に void* へキャストできないようにしました。
0269デフォルトの名無しさん
2007/02/21(水) 15:25:56やはりこれは真の1.000への修正だろうか。
0270デフォルトの名無しさん
2007/02/21(水) 15:28:59かなり重要な修正じゃん。
それと今dmdが目指してるのは2.0。
0271デフォルトの名無しさん
2007/02/21(水) 21:31:32安定志向という考えはD言語開発陣の辞書には無いということですかwwww
0272デフォルトの名無しさん
2007/02/21(水) 21:34:510273デフォルトの名無しさん
2007/02/21(水) 22:40:45実際の話、WalterもDの開発を通して新たに学ぶことがあるんだろうか。
Dで色々試して要るもの要らないものを見極めたら、
その集大成としてD--でも作ったほうがいいんじゃなかろーか、とか思う。
0274デフォルトの名無しさん
2007/02/21(水) 22:42:080275デフォルトの名無しさん
2007/02/21(水) 23:34:140276デフォルトの名無しさん
2007/02/22(木) 06:40:21趣味でDを作ってるンよ
0277デフォルトの名無しさん
2007/02/22(木) 07:27:110278デフォルトの名無しさん
2007/02/22(木) 07:50:410279デフォルトの名無しさん
2007/02/22(木) 08:06:03高性能ですが
高性能ですが
0280デフォルトの名無しさん
2007/02/22(木) 08:10:090281デフォルトの名無しさん
2007/02/22(木) 11:00:340282デフォルトの名無しさん
2007/02/22(木) 11:31:30「高機能」となら言ってもいい・・よな?
あと、綺麗なコードを書けるという意味では、
「表現できること」は比較にならんほど向上してると思う。
0283デフォルトの名無しさん
2007/02/22(木) 11:32:16おまいに問いたい。Z言語は最高に高機能なんですか?
ttp://ja.wikipedia.org/wiki/Z%E8%A8%80%E8%AA%9E
0284デフォルトの名無しさん
2007/02/22(木) 13:18:45仕様が固まらないと実用する気にならないのが難点。
0285デフォルトの名無しさん
2007/02/22(木) 13:20:560286デフォルトの名無しさん
2007/02/22(木) 13:25:070287デフォルトの名無しさん
2007/02/22(木) 13:57:550288デフォルトの名無しさん
2007/02/22(木) 14:45:100289デフォルトの名無しさん
2007/02/22(木) 15:30:320290デフォルトの名無しさん
2007/02/22(木) 16:38:090291デフォルトの名無しさん
2007/02/22(木) 17:06:32じゃないかな。
0292デフォルトの名無しさん
2007/02/22(木) 17:09:310293デフォルトの名無しさん
2007/02/22(木) 18:18:250294デフォルトの名無しさん
2007/02/22(木) 18:29:57マチクタビレタ〜
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・) < コルーチンまだ〜?
\_/⊂ ⊂_ ) \_____________
/ ̄ ̄ ̄ ̄ ̄ ̄ /|
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| 愛媛みかん |/
0295デフォルトの名無しさん
2007/02/22(木) 18:42:530296デフォルトの名無しさん
2007/02/22(木) 19:40:27ライブラリでの提供より組み込み型の方がパッと見見やすい気がする
そんなもんどうでも良いと言うなら今から作る
0297デフォルトの名無しさん
2007/02/22(木) 19:53:460298デフォルトの名無しさん
2007/02/22(木) 20:12:34phobosを一度整理してこの手のライブラリ間の重複をなくして欲しい。
0299デフォルトの名無しさん
2007/02/22(木) 20:40:27【PS2】オトスタツOtostaz [家ゲー攻略]
べアルファレスを語るスレ part14 [家ゲーRPG]
【肉食いたい】お金くださいPart27【米もない】 [借金生活]
★合法的に誰かが金を貸してくれるスレ その42★ [借金生活]
45歳以上の転職Part7 -25 OR 6 TO 4- [転職]
0300デフォルトの名無しさん
2007/02/23(金) 07:04:140301デフォルトの名無しさん
2007/02/23(金) 11:17:310302デフォルトの名無しさん
2007/02/23(金) 13:45:26Walter Bright @ NWCPP: Advanced D Programming Language Features
0303デフォルトの名無しさん
2007/02/23(金) 14:25:070304デフォルトの名無しさん
2007/02/23(金) 15:45:50"ほげ"w
どっちにしろwcharを扱えるphobosの関数が足りてなくてどうしようもない。
0305デフォルトの名無しさん
2007/02/23(金) 15:51:520306デフォルトの名無しさん
2007/02/23(金) 18:57:34thx.
wchar[] apology =
"プログラムは動作を停止しました"w
~"解決策を確認しています"w
~"ご迷惑をおかけしまして申し訳ありません"w;
vip的になってしまった
0307デフォルトの名無しさん
2007/02/23(金) 19:15:12まぁD言語だと文字列は文脈に応じて自動的にwchar[]とかdchar[]にもなるからこれでいんだけどな
wchar[] apology =
"プログラムは動作を停止しました"
"解決策を確認しています"
"ご迷惑をおかけしまして申し訳ありません";
0308デフォルトの名無しさん
2007/02/23(金) 19:18:15×文字列
○文字列リテラル
0309デフォルトの名無しさん
2007/02/23(金) 20:23:26お、すまんすまん。確かにその通り。
あんがと。
0310デフォルトの名無しさん
2007/02/23(金) 20:34:39Northwest C++ Users Groupの2007年集会で行われた、
WalterによるD言語のプレゼン……でいいのか?
トーク内容どころか右の要約(らしきもの)すらよく分からん(´・ω・`)
DとC++のコードを比較しながら
「mixinとかtupleとかscope guardとか良いものだー」って感じ?
0311デフォルトの名無しさん
2007/02/23(金) 22:48:270312デフォルトの名無しさん
2007/02/24(土) 00:01:090313デフォルトの名無しさん
2007/02/24(土) 00:15:490314デフォルトの名無しさん
2007/02/24(土) 01:00:200315デフォルトの名無しさん
2007/02/24(土) 02:04:170316デフォルトの名無しさん
2007/02/24(土) 02:21:110317デフォルトの名無しさん
2007/02/24(土) 02:39:160318デフォルトの名無しさん
2007/02/24(土) 03:39:55ネタは向こうでやってよ
http://pc10.2ch.net/test/read.cgi/tech/1164376614/l50
0319デフォルトの名無しさん
2007/02/24(土) 05:24:430320デフォルトの名無しさん
2007/02/24(土) 08:30:58適当に複数の値を戻り値にしたい場合に使える。
例えば Ruby だと
d, m = divmod(5, 2)
def divmod(x, y)
return x / y, x % y
end
みたいにできる。
構造体使うのは各値に名前がつくからバグ抑制にはいいんだが、
適当にちょっとしたプログラムを作る時には少々うざったい。
0321デフォルトの名無しさん
2007/02/24(土) 11:16:080322313
2007/02/24(土) 12:04:27公式で「関数からタプルを返せるように」 する予定は一応あるみたいだけども。
0323デフォルトの名無しさん
2007/02/24(土) 12:25:44return %(x / y, x % y);
}
%(d, m) = divmod(x, y);
少しダサイか。
単項 % はないから導入可能な文法ではあるんだろうけど。
いくつか候補はあるけど、どうよ?
/(int, int) divmod(int x, int y) { return /(x / y, x % y); } /(d, m) = divmod(x, y);
%(int, int) divmod(int x, int y) { return %(x / y, x % y); } %(d, m) = divmod(x, y);
?(int, int) divmod(int x, int y) { return ?(x / y, x % y); } ?(d, m) = divmod(x, y);
^(int, int) divmod(int x, int y) { return ^(x / y, x % y); } ^(d, m) = divmod(x, y);
|(int, int) divmod(int x, int y) { return |(x / y, x % y); } |(d, m) = divmod(x, y);
:(int, int) divmod(int x, int y) { return :(x / y, x % y); } :(d, m) = divmod(x, y);
.(int, int) divmod(int x, int y) { return .(x / y, x % y); } .(d, m) = divmod(x, y);
=(int, int) divmod(int x, int y) { return =(x / y, x % y); } =(d, m) = divmod(x, y);
<(int, int) divmod(int x, int y) { return <(x / y, x % y); } <(d, m) = divmod(x, y);
>(int, int) divmod(int x, int y) { return >(x / y, x % y); } >(d, m) = divmod(x, y);
<<(int, int) divmod(int x, int y) { return <<(x / y, x % y); } <<(d, m) = divmod(x, y);
>>(int, int) divmod(int x, int y) { return >>(x / y, x % y); } >>(d, m) = divmod(x, y);
>>>(int, int) divmod(int x, int y) { return >>>(x / y, x % y); } >>>(d, m) = divmod(x, y);
<=(int, int) divmod(int x, int y) { return <=(x / y, x % y); } <=(d, m) = divmod(x, y);
>=(int, int) divmod(int x, int y) { return >=(x / y, x % y); } >=(d, m) = divmod(x, y);
0324デフォルトの名無しさん
2007/02/24(土) 13:51:11@(int, int) divmod(int x, int y) { return @(x / y, x % y); } @(d, m) = divmod(x, y);
$(int, int) divmod(int x, int y) { return $(x / y, x % y); } $(d, m) = divmod(x, y);
\(int, int) divmod(int x, int y) { return \(x / y, x % y); } \(d, m) = divmod(x, y);
0325デフォルトの名無しさん
2007/02/24(土) 14:00:43int:int divmod(int x, int y) { return x / y : x % y; } d:m = divmod(x, y);
""wのように[int,int]tって方法もありそう。
#タプルの連結を~でできるようにならないかなぁ。
0326デフォルトの名無しさん
2007/02/24(土) 20:48:00タプルリテラルがかけなくとも、単に型タプルを戻り値型のところに
書けるようになれば十分じゃない? Tuple!(int,int)てな感じで。
関数が(値タプルだけではなく)型タプルも返せるようになれば、
template tuple(T...){
Tuple!(T...) tuple(T...){
return Tuple!(T...);
}
}
とかテンプレート関数を定義できるようになるだろうから、
テンプレート関数をコンパイル時実行させることを利用して
tuple(int,int) func(){
return 3,6
}
とか書けるようになるだろうし。
castとかと類似の文面になる方がよいと思う。
0327323じゃないけど
2007/02/24(土) 21:34:53型タプルを返せるようになったならこうでしょ。
TL tuple(TL...)(TL tl){
return tl;
}
下もこう。
tuple(int,int) func(){
return tuple(3,6);
}
でも、やっぱタプルリテラルは必要。内部機能を使うのにimportをするのはダサい。
0328デフォルトの名無しさん
2007/02/24(土) 23:21:12でも、ここは導入してもいい気がする。
あと、タプルの展開もできるようにして欲しい。
Ruby だと配列を展開して引数に渡せるけど、あれみたいなやつを。
double foo(double x, double y) {
return x / y;
}
auto x = tuple(1.0, 2.0);
writeln(foo(*x));
みたいな。
Ruby の関数の引数は確か実はタプルとして実装されてたと思うけど、
あれはコンマ演算子がタプル生成演算子になってるからできる芸当なんだよな。
D で C と同様の仕様のコンマ演算子って本当に必要なんだろうかね・・・と思ったけど、
三項演算子の中で複数の式を実行したい場合に必要と言えば必要か。
コンマ演算子は評価順が決まってるべきだけど、
引数は評価順が決まってない方が都合がいい場合もあるから、
両者を同一のモノで実装するのは速度との両立という観点からすればアレだし、
D では Ruby と同じにしない方が良さげだな。
0329デフォルトの名無しさん
2007/02/24(土) 23:32:04既にできるじゃん。
double foo(double x, double y) {
return x / y;
}
auto x = TypeTuple!(1.0, 2.0);
writeln(foo(x));
0330デフォルトの名無しさん
2007/02/25(日) 00:00:28そうか、できるのか・・・。
0331デフォルトの名無しさん
2007/02/25(日) 00:08:11scope hoge = new File("foo.bar", FileMode.OutNew);
with(hoge){
writefln("Foo");
}
}
これを、
with(scope new File("foo.bar", FileMode.OutNew)){
writefln("Foo");
}
こうかけるようになったらいいなって思った。
0332デフォルトの名無しさん
2007/02/25(日) 00:08:21Rubyの話をしに来てるみたいだな
0333デフォルトの名無しさん
2007/02/25(日) 03:03:18文法上は"with(Expression)"だからなぁ。
scopeは属性だからExpressionにはくっつけられないのよね。
でも、withのExpressionの値を保持しておく変数って、内部的に生成されてるはずだよね?
だとしたらその変数の型とかって、値から推論されて決まってるのかな。
「勝手に推論が使われて明示的な宣言ができない」部分があるってのは、良くない事な気がする。
推論は明示的な宣言を省略して簡略化できる機能、であってほしい。
……"with"を文法上は変数宣言っぽく扱って、修飾子がつけられるようにする、とか。
scope synchronized char[] with(["foo", "bar", "baz"]){
writefln("Foo");
}
ああ、scopeとsynchronized以外に意味のある宣言が見当たらないや。
scopeのブロック外に出てるとかキモいし。
0334デフォルトの名無しさん
2007/02/25(日) 04:31:480335デフォルトの名無しさん
2007/02/25(日) 08:31:38?
1,日本語覚えたてのウォルターたん
2,アスカが見参しちゃってるinabaたん
3,誤爆
0336デフォルトの名無しさん
2007/02/25(日) 09:31:405, GDC
0337デフォルトの名無しさん
2007/02/25(日) 22:40:198,2byte圏のみんな
0338337
2007/02/25(日) 22:41:056忘れてたw
0339デフォルトの名無しさん
2007/02/25(日) 22:46:160340デフォルトの名無しさん
2007/02/26(月) 01:55:530341デフォルトの名無しさん
2007/02/26(月) 05:30:09空気嫁
0342デフォルトの名無しさん
2007/02/26(月) 07:03:360343デフォルトの名無しさん
2007/02/26(月) 09:46:49いや、流れが潰れたからこれでいいのか。
0344デフォルトの名無しさん
2007/02/26(月) 10:37:13QtでGUIフロントエンドを作ると良い感じかもしれない。
0345デフォルトの名無しさん
2007/02/26(月) 12:34:26D言語のQtportingってもうあるのか?
0346345
2007/02/26(月) 12:37:040347デフォルトの名無しさん
2007/02/26(月) 13:38:01しかしQtのおかげでまたC++使い出すようになった・・・
0348デフォルトの名無しさん
2007/02/26(月) 15:24:33でもそんなことしたらKDEが凄い事になりそうだな。
0349デフォルトの名無しさん
2007/02/26(月) 16:02:400350デフォルトの名無しさん
2007/02/26(月) 16:21:40hoge.allというファイルでまとめてインポートする
0351デフォルトの名無しさん
2007/02/26(月) 16:49:45Dって基本的な言語仕様とライブラリ関係のバグは一通り取れてる感じ?
ネイティブでモダンな言語として、C/C++の代わりにできれば使いたいんだけど。
(スレを一通り読んだ感じでは非常に心配なんだが・・・・)
0352デフォルトの名無しさん
2007/02/26(月) 16:52:210353デフォルトの名無しさん
2007/02/26(月) 17:34:550354デフォルトの名無しさん
2007/02/26(月) 17:40:36UTF-8しか使わないならお勧め。
0355デフォルトの名無しさん
2007/02/26(月) 17:47:560356デフォルトの名無しさん
2007/02/26(月) 20:17:49本当にC/C++に疲れてるんだったら触れてみるのも良いかも。
まぁ大規模な仕様変更は無いにしても、機能追加やバグフィックスはまだあるだろうけどね。
0357デフォルトの名無しさん
2007/02/26(月) 20:20:50後、他のやつが言うようにエンコードあたりはダメだけど、その辺はtangoとか使えば良いかもしれん。
0358デフォルトの名無しさん
2007/02/26(月) 21:48:23金払えばソース公開しなくていいよ
0359デフォルトの名無しさん
2007/02/26(月) 22:34:12やっぱり売り物作ってると邪魔なのかなぁ。
0360デフォルトの名無しさん
2007/02/26(月) 23:00:32キモイGPL信者にGPLのソフトをしつこく薦められたことがあるから。
0361デフォルトの名無しさん
2007/02/26(月) 23:02:21他に使いたいライブラリとぶつかってしまう場合もしばしばある
0362デフォルトの名無しさん
2007/02/26(月) 23:07:57なるほど。
なんにせよ押し付けはよろしくないよね。
俺も気を付ける。
>>361
まぁ感染力強すぎるのはあるよね。
0363デフォルトの名無しさん
2007/02/27(火) 00:01:49>なんにせよ押し付けはよろしくないよね。
>俺も気を付ける。
頼むからそうしてくれ。
オープンソース系のソフトで、よさそうなのがあっても
自分が他人からキモイ信者達と同じ人種に見られるのが
恥ずかしくて採用を見送ることがよくある。
0364351
2007/02/27(火) 00:04:03とにかく使い始めてみる。
0365デフォルトの名無しさん
2007/02/27(火) 18:54:51static assert(x[0] == "a");
これってできないの?
0366デフォルトの名無しさん
2007/02/27(火) 19:21:59static assert(x[0] == "a"); → static assert(x[0] == 'a');
じゃないか?
0367デフォルトの名無しさん
2007/02/27(火) 19:28:18現状では無理。もしそれをできるようにするならdmdの配列リテラルの設計を文字リテラルと同じようにしないといけない。
0368365
2007/02/27(火) 19:44:13特別な理由でもあるんかな
0369デフォルトの名無しさん
2007/02/27(火) 19:46:590370デフォルトの名無しさん
2007/02/27(火) 22:41:12配列xがconstなだけでxの要素(である配列)はconstじゃないよ、
とかそういう理由かな。
0371デフォルトの名無しさん
2007/02/27(火) 23:10:47違うとおも。文字列リテラルだと宣言された型をスルーして値型(静的配列)として内部で扱ってたはずだけど、配列リテラルでは宣言時点でオブジェクトに書き込むようになってたはず。
0372デフォルトの名無しさん
2007/02/28(水) 00:43:33仕様バグという話じゃないなら、今後の改善に期待か
0373デフォルトの名無しさん
2007/02/28(水) 06:50:58lazyをdelegateに変換する時にこういうのはどうだろう
int delegate() dg;
void hoge( int delegate()[] d... ) {
dg = d[0];
}
int n = 12;
hoge(n);
0374デフォルトの名無しさん
2007/02/28(水) 15:14:23どこにlazyが
0375デフォルトの名無しさん
2007/02/28(水) 19:24:010376C++最強伝説
2007/02/28(水) 20:56:33[D] 攻撃:97 素早さ:15 防御:22 命中:92 運:42 HP:291
C++ vs D 戦闘開始!!
[C++]の攻撃 HIT [D]は149のダメージを受けた。
[D]の攻撃 HIT [C++]は69のダメージを受けた。
[C++]の攻撃 HIT [D]は191のダメージを受けた。
[C++]が[D]を倒しました(ラウンド数:2)。
魔法のMD5 - MD5バトル http://www.newspace21.com/mix/btl.php
0377デフォルトの名無しさん
2007/02/28(水) 23:30:100378デフォルトの名無しさん
2007/02/28(水) 23:36:500379デフォルトの名無しさん
2007/02/28(水) 23:47:03結構強くて「おお!」とか思ったのを覚えてる。Dも結構強いな。
0380デフォルトの名無しさん
2007/02/28(水) 23:48:170381デフォルトの名無しさん
2007/02/28(水) 23:56:39ソフトウェアなどを使いこなすために、
ストレスを感じながらもしぶしぶ覚えなければならないようなノウハウ。
高林哲による造語。
氏によると、バッドノウハウは、
複雑な設定を「奥が深い」として有難がってしまう
マニア独特の感性によってはびこるという。
0382デフォルトの名無しさん
2007/03/01(木) 00:31:33あれは公式に認められた使い方?
0383デフォルトの名無しさん
2007/03/01(木) 00:42:370384デフォルトの名無しさん
2007/03/01(木) 03:05:31http://www.kmonos.net/alang/d/struct.html
> opCall がその構造体でオーバーライドされていて、
> 別の型の値で構造体が初期化されようとしているときには、
> opCall 演算子が呼び出されます:
ということだから、
opCallを初期化用途に使うこともOKじゃないかな、たぶん。
0385デフォルトの名無しさん
2007/03/01(木) 13:07:450386デフォルトの名無しさん
2007/03/02(金) 10:26:51import std.hoge; でなくて
import phobos.hoge; の方がいい感じに見えてくる
0387デフォルトの名無しさん
2007/03/02(金) 17:29:53賛成
0388デフォルトの名無しさん
2007/03/02(金) 17:30:550389デフォルトの名無しさん
2007/03/02(金) 17:38:110390デフォルトの名無しさん
2007/03/02(金) 18:37:15tarballでくれ
0391デフォルトの名無しさん
2007/03/02(金) 18:58:530392デフォルトの名無しさん
2007/03/02(金) 19:10:26ShiftJISやEUCの漢字コードの変換がどうしてもしたくて、
勉強のためにgreen padをいじってD版でも作ろうかとなんとなく考える俺ガイル
0393デフォルトの名無しさん
2007/03/03(土) 02:32:12後は頼んだ
0394デフォルトの名無しさん
2007/03/03(土) 09:09:28int[] hoge readInt(5);
があったらいいなと思うんだけれど
0395394
2007/03/03(土) 09:12:07>int[] hoge readInt(5);
int[] = hoge readInt(5);
0396394
2007/03/03(土) 09:14:20完璧レス汚し
>int[] hoge readInt(5);
int[] hoge = readInt(5);
0397デフォルトの名無しさん
2007/03/03(土) 09:39:12import std.stream,std.bind;
int delegate(int delegate(inout T)) readTApply(T)(Stream strm,int n){
return bind(function(Stream strm,int n,int delegate(inout T)dg){
T v;
while(n-- && strm.readf(&v))
if(int r = dg(v))return r;
return 0;
},strm,n,_0).ptr;
}
T[] readT(T)(Stream strm,int n){
T[]r;
foreach(x;readTApply!(T)(strm,n))r~=x;
return r;
}
import std.cstream;
void main(){
foreach(c;readT!(int)(din,2))
printf("%d\n",c);
}
0398デフォルトの名無しさん
2007/03/03(土) 14:42:160399398
2007/03/03(土) 15:22:11これを他の場所に変えるにはどうすれば良いんでしょうか
0400デフォルトの名無しさん
2007/03/03(土) 15:23:590401398
2007/03/03(土) 15:25:260402デフォルトの名無しさん
2007/03/03(土) 16:08:4604033_9_8
2007/03/03(土) 16:27:370404デフォルトの名無しさん
2007/03/03(土) 16:30:220405デフォルトの名無しさん
2007/03/03(土) 16:51:070406デフォルトの名無しさん
2007/03/03(土) 17:01:070407デフォルトの名無しさん
2007/03/03(土) 17:19:28にゅーすぐるーぷみれ
0408デフォルトの名無しさん
2007/03/03(土) 22:55:210409デフォルトの名無しさん
2007/03/03(土) 23:11:590410デフォルトの名無しさん
2007/03/04(日) 00:17:04http://trac.dsource.org/projects/build/browser/downloads/bud_win_3.04.exe?format=raw から
http://www.dsource.org/projects/build/browser/downloads/bud_win_3.04.exe?format=raw
に変えたら事故解決してしまいました。
0411デフォルトの名無しさん
2007/03/04(日) 18:40:40この規模のプロジェクトで、この数はふつ〜なの?
なんかをるたーたんがおもろいとこだけ推し進めてる感があるんだが・・
0412デフォルトの名無しさん
2007/03/04(日) 18:41:390413デフォルトの名無しさん
2007/03/04(日) 19:13:200414デフォルトの名無しさん
2007/03/04(日) 19:36:310415デフォルトの名無しさん
2007/03/04(日) 20:06:00dmd 1.0なんてしょせんただの通過点だし。
0416デフォルトの名無しさん
2007/03/04(日) 20:46:260417デフォルトの名無しさん
2007/03/04(日) 20:47:200418デフォルトの名無しさん
2007/03/04(日) 21:29:36全部同一人物だしこのスレ3人しかいないんだけどな。
0419デフォルトの名無しさん
2007/03/04(日) 23:23:420420デフォルトの名無しさん
2007/03/04(日) 23:46:14ウォルター自身もいろいろ浮かんじゃって……って、一向に安定しない予感。
そんな状況だけど、それでも使いたくなっちゃう俺なんだけど。
ホントに仕様固めるとしたら、
せめて配列リテラルの型は明示できるようにしといて欲しいなぁ……。
あと連想配列のキーにopCmp要求するのやめて'hashCmp'とか別のにしてとか、
せめてmain引数くらいはちゃんとUTF-8変換しといてとか、
ああ、山積みだ。
0421デフォルトの名無しさん
2007/03/04(日) 23:49:07必ず static opCall 作れということなのか?
0422デフォルトの名無しさん
2007/03/05(月) 10:52:490423デフォルトの名無しさん
2007/03/05(月) 11:28:49構造体の定義には struct
共用体の定義には union
関数の定義には function
ってならないの?不公平じゃね
Cとかのいらないものを継承してんのかね
0424デフォルトの名無しさん
2007/03/05(月) 11:38:130425デフォルトの名無しさん
2007/03/05(月) 12:44:480426デフォルトの名無しさん
2007/03/05(月) 13:28:170427デフォルトの名無しさん
2007/03/05(月) 13:30:57恐ろしい
0428デフォルトの名無しさん
2007/03/05(月) 13:43:15ってか。
Cからの継承だろうけど、別に要らないものではないだろう。
明示できるとコンパイラにも人間の読み手にも優しそうではあるが、必須だとメドイし。
……とかいいつつ、
property void foo(int value){ this.value = value; }
みたくプロパティを明示させてくれよー、と主張したい俺としては
`property`に対応する`function`もあってもいいような気がしてきた。妄想しすぎか。
0429デフォルトの名無しさん
2007/03/05(月) 14:24:12むしろfunctionとprocedureとpropertyでそれなんてDelphi
0430デフォルトの名無しさん
2007/03/05(月) 17:30:170431デフォルトの名無しさん
2007/03/05(月) 18:34:36しかしhelloworld.dのコンパイル後サイズは433KBか……。
ちょっと、その、太ったんじゃないか……?
0432デフォルトの名無しさん
2007/03/05(月) 19:08:480433デフォルトの名無しさん
2007/03/05(月) 19:11:320434デフォルトの名無しさん
2007/03/05(月) 19:52:060435デフォルトの名無しさん
2007/03/05(月) 20:14:34さっそくupdateしよ
0436デフォルトの名無しさん
2007/03/05(月) 21:16:120437デフォルトの名無しさん
2007/03/05(月) 22:31:29http://f17.aaacafe.ne.jp/~labamba/
見てたらいまさっきNotFoundになった
0438デフォルトの名無しさん
2007/03/05(月) 22:31:55みられるが?
0439デフォルトの名無しさん
2007/03/05(月) 22:32:090440デフォルトの名無しさん
2007/03/06(火) 05:50:25しかも一度落ちたら酷いと半年以上復活しないことも(そしてデータが消えてることもしばしば)
すぐ復活したのは運が良かったな
0441デフォルトの名無しさん
2007/03/06(火) 06:16:57初期の頃、ちょっとだけ利用してたけど
いまだにそんな学生商売な体質でやってんのかよ。
0442デフォルトの名無しさん
2007/03/06(火) 11:28:180443デフォルトの名無しさん
2007/03/06(火) 11:44:49URL
0444デフォルトの名無しさん
2007/03/06(火) 11:45:25>>437
URL変わってるよ
ブラウザがリダイレクトしなかったんじゃない?
ttp://f17.aaa.livedoor.jp/~labamba/
0445442
2007/03/06(火) 14:13:32それに、今ブクマ確認したら前にグーグルの検索結果に表示されてた時と同じURLだったから違うとおも。
ttp://www.google.co.jp/search?q=D%E8%A8%80%E8%AA%9E&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox
これで検索結果に表示されなくなってる。
0446442
2007/03/06(火) 14:15:130447442
2007/03/06(火) 14:16:39ちょっと確認。
0448442
2007/03/06(火) 14:19:01後、連レスすまそ。
0449デフォルトの名無しさん
2007/03/06(火) 15:02:52ってもLDショック後の再建の影響か最近復帰早め
相変わらずデータはよく飛ぶからバックアップは必須だけどな
っていい加減スレ違いなのでやめとくね
0450デフォルトの名無しさん
2007/03/06(火) 17:39:500451デフォルトの名無しさん
2007/03/07(水) 15:23:190452デフォルトの名無しさん
2007/03/08(木) 00:34:12delphiはhelloworldでも400KB以上にはならないと思うけど
0453デフォルトの名無しさん
2007/03/08(木) 01:00:18標準ライブラリってphobos使ってる?それともtango?
0454デフォルトの名無しさん
2007/03/08(木) 01:44:070455デフォルトの名無しさん
2007/03/08(木) 08:27:310456デフォルトの名無しさん
2007/03/08(木) 10:37:270457453
2007/03/08(木) 10:58:24おまwwでも、dmc側で使ってるんだっけ?
>>455,456
ふ〜ん・・・そうか、やっぱりtangoか・・
でもDLL作れないってどういうこと?linkで弾かれるのか?
0458デフォルトの名無しさん
2007/03/08(木) 12:05:230459456
2007/03/08(木) 12:14:43DLLのガベコレの設定に必要なsetGCHandleとendGCHandleが無かったんで、
それでtango導入をあきらめた過去がある。
ただ、今ソースを見てみたんだけど、必要なものはそろってるから、
dmd\src\phobos\internal\gc\gc.dのgetGCHandleとsetGCHandleとendGCHandleを
tango\lib\gc\basic\gc.dにコピペしてやれば、何とかなるかもしれない。
それ以外にも引っかかった点は、
プリティプリンタがphobosに比べて弱い。
phobosにあってtangoにないものが結構ある。(bind、traits、typetuple、boxer)
「tangoさえあればそれでOK」という感じではなかった。
過去のソースの書き換え&ほかのライブラリが動かないリスクを考えると、
今はまだ様子見の時期かな、と俺は判断した。
「過去のソースの書き換え&ほかのライブラリが動かないリスク」が無ければ
使ってもいいんだけどね。
しかし、エラーの原因がtoStringのtoUtf8化とErrorクラスの削除ってのも微妙というか、
しょうもないことで動かなくなるのは萎える。
0460453
2007/03/08(木) 13:13:17typetubleとか、boxerとか無いんだな・・・
へぇ・・・今後の参考になる。
まぁでも、いつかはtangoか、またはtangoをベースにしたphobosになるだろうから、オレもtangoを導入してみるかな。
後もう一つ質問なんだけど、deimosって何?Waltarタンが新たに構築してる標準ライブラリって聞いたけど?D Runtime Libraryってことは・・・でもDってネイティブだよな
0461453
2007/03/08(木) 13:14:56後、改行してなかった、すまん
0462デフォルトの名無しさん
2007/03/08(木) 20:40:010463デフォルトの名無しさん
2007/03/08(木) 23:07:26font = new Font(cast(char[])(wincs.toMBSz("MS 明朝"))[0..9], 24f);
とすることで解決することが判明…これはイカンよなぁ…
0464デフォルトの名無しさん
2007/03/09(金) 00:23:450465デフォルトの名無しさん
2007/03/09(金) 00:57:51listview.font = new Font("MS 明朝", 16);
これでちゃんと変更されたが?
どのコントロールだ?
0.9.5から全コントロールがUnicodeサポートされたことになってるから
対応作業の抜けがあるのかも
0466465
2007/03/09(金) 02:10:14もっかい確認してきまつ
0468デフォルトの名無しさん
2007/03/09(金) 11:12:02dfl/drawing.d の 2965〜2968行
0469デフォルトの名無しさん
2007/03/09(金) 13:16:36急ぎではないがちょっとほしいなと思っていて、
なければ書こうかと思っているところ。
0470デフォルトの名無しさん
2007/03/09(金) 13:40:27XMLじゃないけどもしかしたら代用になるかもしれないbogoYAML。
http://shinh.skr.jp/d/bogoyaml.html
0471デフォルトの名無しさん
2007/03/09(金) 16:15:02お蔵入りにしてるSAXパーサなら俺がもってる。
0472デフォルトの名無しさん
2007/03/09(金) 17:12:30願わくば頂きたい。ライセンスとかはご随意に。
NYSL by k.inabaならうれしいw
ちなみに俺が書こうとしていたのはDOMです。
完成したらdsourceかどこかで公開いたします。
ライセンスはもちろんNYSL。なぜならこれも特別でないライブラリだからです。
0473デフォルトの名無しさん
2007/03/09(金) 17:25:510474デフォルトの名無しさん
2007/03/09(金) 17:36:22http://www.vipper.net/vip194365.zip.html
役に立つか分からんけど一応。
ライセンスは勿論NYSLです。
未だ名前空間にウマく対応出来てないし途中で作りかけの奴もあるうえに、
文字コード変換が抜けてるけど勘弁して。
0475デフォルトの名無しさん
2007/03/09(金) 17:37:04google サーチ最高!みたいな、書き込みでテンプレートのページが
上書きされてたの消したのだけど、なんか、あるのかなぁとか思ったり。
新しい情報少ないのでいいんじゃないかとも思ったり。
0476デフォルトの名無しさん
2007/03/09(金) 17:44:21頂きました。ってかOSXすかw
YAMLではNGだったんですが、用途が
OSXユーザから、GPSのトラックデータ(XML)からGoogle Earthのレイヤ(XML)に変換したいという依頼を受けた
っつー理由だったんですわw
Xcode用のDテンプレートを書こうとしたが、思っただけでやっておりませぬ。
0477デフォルトの名無しさん
2007/03/09(金) 17:45:51何故バレた?ちなみにPPCのOSXだぜwww
0478デフォルトの名無しさん
2007/03/09(金) 17:52:27OS9のStuffitやOSXの標準zipを使うと、リソースフォークが別ファイルになって保存されるので、*xやWindowsのユーザーからはすぐ判別つきますよ。
.DS_Storeとか__MACOSXで検索すると理由はわかるはず。
私は卒論書いてたころはOS9で、いまはMacBook Proだす。コンパイル速いっすよ。
0479デフォルトの名無しさん
2007/03/09(金) 17:54:57そんな事があるのか。ありがと。
0480デフォルトの名無しさん
2007/03/09(金) 18:01:350481デフォルトの名無しさん
2007/03/09(金) 18:02:370482デフォルトの名無しさん
2007/03/09(金) 21:01:370483デフォルトの名無しさん
2007/03/09(金) 21:05:060484デフォルトの名無しさん
2007/03/09(金) 21:16:150485デフォルトの名無しさん
2007/03/09(金) 21:16:32自前でこんなん書いて逃げるしかないのかなあ
Font createFont(char[] font, uint size) {
return new Font(toMBSz(font)[0..font.length], size);
}
作者にtoMBSzを使わなくてもいいようにしてもらうべきか?
自分でやろうにもフォント関係は経験なくてわからんのだが・・・
0486デフォルトの名無しさん
2007/03/09(金) 21:28:080487デフォルトの名無しさん
2007/03/09(金) 21:29:190488デフォルトの名無しさん
2007/03/09(金) 22:18:00確かに、1.007がリリースされたのに、まだ1.006だったり。
0489デフォルトの名無しさん
2007/03/09(金) 23:11:49それがwikiってもんでしょ。
0490デフォルトの名無しさん
2007/03/09(金) 23:21:03UTF-8/16/32の生のバイト列をドンと置かれただけで、
「この言語はUnicode対応、文字列を簡単に扱えます」とか言われても納得いかーん。
0491デフォルトの名無しさん
2007/03/09(金) 23:29:140492468
2007/03/09(金) 23:42:51dfl/drawing.d の 2965〜2968行
####################################
if(name.length >= lf.lfFaceName.length)
throw new DflException("Invalid font name");
lf.lfFaceName[0 .. name.length] = name;
lf.lfFaceName[name.length] = 0;
####################################
を、とりあえず
####################################
{ char* p = toAnsiz(name);
for( int i = 0; (lf.lfFaceName[i] = p[i]) != 0; i++ )
if( i >= lf.lfFaceName.length-1 ) throw new DflException("Invalid font name");
}
####################################
と、書き換えてみた。
0493デフォルトの名無しさん
2007/03/09(金) 23:59:560494485
2007/03/10(土) 00:23:01>>492 を誰か
ttp://dsource.org/forums/viewforum.php?f=39
にコミットしてくんない?
0495デフォルトの名無しさん
2007/03/10(土) 01:27:00まで読んだ
0496デフォルトの名無しさん
2007/03/11(日) 09:37:220497デフォルトの名無しさん
2007/03/11(日) 16:48:450498デフォルトの名無しさん
2007/03/11(日) 16:56:110499デフォルトの名無しさん
2007/03/11(日) 16:57:450500デフォルトの名無しさん
2007/03/11(日) 20:46:151.Template inheritance.
2.Array operations.
この辺の更新ってやる気ないんかね。
そもそもできて何の得があるのか…
0501デフォルトの名無しさん
2007/03/11(日) 20:57:091.0よりずっと前から絶賛放置中。
0502デフォルトの名無しさん
2007/03/11(日) 21:32:090503デフォルトの名無しさん
2007/03/11(日) 21:42:510504デフォルトの名無しさん
2007/03/11(日) 22:09:02は,コードの重複をさらに減少させることができて
2.Array operations.
は,マルチコアCPU時代には必要な物では
0505デフォルトの名無しさん
2007/03/11(日) 22:10:16バージョン番号を無駄遣いし始めたら
1.998->1.999->1.1000も夢ではないなw
0506デフォルトの名無しさん
2007/03/11(日) 22:14:43C++0x
0507デフォルトの名無しさん
2007/03/12(月) 21:04:40普通にウォルタータンの間違い?まさかギャグ
0508デフォルトの名無しさん
2007/03/12(月) 22:11:080509デフォルトの名無しさん
2007/03/12(月) 22:12:040510デフォルトの名無しさん
2007/03/12(月) 22:56:45本人曰くスペシャルビルドらしい。詳細は不明。
0511デフォルトの名無しさん
2007/03/12(月) 23:02:160512デフォルトの名無しさん
2007/03/12(月) 23:08:030513デフォルトの名無しさん
2007/03/12(月) 23:48:460514デフォルトの名無しさん
2007/03/12(月) 23:56:390515デフォルトの名無しさん
2007/03/13(火) 00:00:31import dfl.all, dfl.internal.utf;
{
Font font = new Font(toAnsi("MS 明朝"), 16);
}
これで解決できてしまうので投稿はやめようかと思う
自分で変換しなきゃいけないのは誰が悪いんだ?
OSがフォント名をUnicodeで受け付けてくれないのが悪いのか
dflが変換してくれるべきなのかどっちだろう
dflが変換するべきならどうやって切り替えるべきだろう?
0516デフォルトの名無しさん
2007/03/13(火) 00:03:330517デフォルトの名無しさん
2007/03/13(火) 00:25:37> OSがフォント名をUnicodeで受け付けてくれないのが悪いのか
OS側は勿論Unicodeフォント名に対応してるよ。
CreateFont(Indirect)()にしろ、LOGFONTにしろね。
糞な現状では、ttp://www.kmonos.net/alang/wnd/topics/winapi.ja.html
に書いてある方法が比較的マシな対処法かと。
少なくともTCHARマクロに慣れているC/C++プログラマにとっては親しみやすい
方法だろう。
0518デフォルトの名無しさん
2007/03/13(火) 00:33:48他のバイナリデータを平気で代入してるなんて気持ち悪すぎる。
0519デフォルトの名無しさん
2007/03/13(火) 00:44:11Cの関数に渡すようなポインタはmalloc()とかGlobalAlloc()とかすべき?
0520デフォルトの名無しさん
2007/03/13(火) 00:51:56あーそうかわかったわかった
-version=Unicode かどうかで CreateFontIndirectA/W を使い分けてもらえばいいだけっぽいな
0521デフォルトの名無しさん
2007/03/13(火) 01:00:43CreateFontIndirect / LOGFONT に alias してそっちを使ってもらおう
0522デフォルトの名無しさん
2007/03/13(火) 01:37:300523デフォルトの名無しさん
2007/03/13(火) 01:52:08Latin-1とかでもUTF-8エンコーディングならマルチバイトになるよ。
な〜んも気にしないでいいのは、ASCIIしか使わない人だけ。
0524デフォルトの名無しさん
2007/03/13(火) 10:52:160525デフォルトの名無しさん
2007/03/13(火) 11:27:54CGIならDで十分いけますか?
0526デフォルトの名無しさん
2007/03/13(火) 12:18:16ver1.009, XPpro
// jp.d
import std.cstream;
void main(char[][] arg) { dout.writeString(arg[1]); }
>jp 日本語
{語
>jp 0日本語
0日本語
0527デフォルトの名無しさん
2007/03/13(火) 12:33:550528デフォルトの名無しさん
2007/03/13(火) 12:34:57引数はshiftjisじゃね?
出力先もshiftjisだから微妙に表示できて混乱するだろうが。
0529デフォルトの名無しさん
2007/03/13(火) 13:18:38テンプレの過去ログは全滅っぽくて見つからないのです・・・
どこかに倉庫ありますか?
>528
引数はshiftjisだと思います・・・
でもJcodeConvert通してもだめで,
argの配列に切り分けるときにすでに失敗してるんじゃないかと
0530デフォルトの名無しさん
2007/03/13(火) 13:24:43でもあれも\が消えるんだよね。仕様?
0531デフォルトの名無しさん
2007/03/13(火) 14:20:03char[][] args;
foreach(char[] arg; _args){
args ~= fromMBSz((arg ~ '\0').ptr);
}
なんてのをわざわざ入れてる俺。
ホントはスタートアップルーチンでやってくれなきゃ困るんだけどなぁ。
0532531
2007/03/13(火) 14:27:23さんざ語られた文字コード問題だけど、過去ログ消えてるのは痛いか。
困ったときはinabaさんに頼るか。
http://www.kmonos.net/alang/wnd/topics/pitfall.ja.html#mojibake
0533デフォルトの名無しさん
2007/03/13(火) 18:47:10にくちゃんねる
Part8 >50-100
Part9 >509-
0534デフォルトの名無しさん
2007/03/14(水) 01:25:00>正しくは、標準ライブラリが画面出力の直前に、その環境の文字コードへと変換をかけるべきです。
(「利用者がwriteflnする直前に変換する」のは間違いです、念のため…)。
そうかなぁ?おいら的には、正しくはコンソールがUTF-8を表示出来るべきです。
で、次善の策としては、利用者がwriteflnする直前に変換するで、最後が、
標準ライブラリで対応だと思う。
D言語はUTF-8(UNICODE)で動くんだから、環境の問題は環境で解決するべきだと思う。
0535デフォルトの名無しさん
2007/03/14(水) 01:34:21> D言語はUTF-8(UNICODE)で動くんだから、環境の問題は環境で解決するべき
そういう言語は決して実用的な言語にはなりえません。
そのようなポリシーで開発されたソフトウェアを多くの人に/多くの環境で
使ってもらうことは不可能です。
0536デフォルトの名無しさん
2007/03/14(水) 02:33:190537デフォルトの名無しさん
2007/03/14(水) 02:38:31Windowsでは無理だからそれ。
0538526
2007/03/14(水) 02:38:45できました!が\はやっぱり無視されたみたいです...
// jp.d
import std.cstream, tx.all, jcode;
void main(char[][] arg)
{
argvfix(arg);
dout.writeString(JcodeConvert(arg[1],"auto","sjis"));
}
>jp 日本語\ほげ
出力:日本語ほげ
>531
解決しないみたいです.同じような症状になってしまいました.
>533
ありがとうございます><
今から見ているところです.
part8 res69にある"で括る方法は使えそうです
>test "もうだめぽ"
>自
ファイルのパスを与えるのが目的だったので
-fパス
のような形式にしたらとりあえずちゃんと動きました
皆さんありがとう
0539>526
2007/03/14(水) 02:41:12>528は>530の間違いです
0540デフォルトの名無しさん
2007/03/14(水) 02:48:27UTF-8のコードページはあってもMultibyteToWideChar()等で使えるだけの
偽コードページ。
コンソールコードページも当然UTF-8なんてものはない。
日本語版MSVC++もCP932なソースしか通さない。
そんな環境だぞWindowsは。
MBCS=DBCSと決めうち、mb_len()は2以下で決めうちなコードがあまりにも
はびこっているために、もはや修正不可能であるらしい。
0541デフォルトの名無しさん
2007/03/14(水) 03:17:40そりゃそうだ、だから、しょうがなしに標準ライブラリで対応(サービス)するのは
構わないと思う。
んがぁ、「正しくは」と言い切るかどうかに、引っかかるわけ。
理念を曲げる、余計な装飾を施すことを否定しないけど、そっちを正しいとするのには
違和感が有るんですよ。
0542デフォルトの名無しさん
2007/03/14(水) 04:13:23一応Dは現実的に実用的っていうポリシーがあるわけだし。
標準の入出力が化けるって実用上冗談にもならないじゃん。
0543デフォルトの名無しさん
2007/03/14(水) 04:14:430544デフォルトの名無しさん
2007/03/14(水) 05:07:24まだ、やりたくない事をやってもらえる段階じゃ無いと思うし。
あと、そんな所に時間を使って欲しくないのもあるな。
ほっときゃWindowsが対応して時間が解決してくれるかもしれないし。
0545デフォルトの名無しさん
2007/03/14(水) 08:36:040546デフォルトの名無しさん
2007/03/14(水) 08:48:32ソース公開してねぇじゃんよw
0547デフォルトの名無しさん
2007/03/14(水) 09:04:48ttp://www.prowiki.org/wiki4d/wiki.cgi?AllLibraries/XmlLibraries
ttp://www.dsource.org/projects/mango/browser/branches/v2.1/mango/xml
Boost::Randomみたく、
DOM, SAXともにinterfaceが定義してあって、
実装を任意に結合できるようにすると賢い気もするがどうなんだろ。
個人的にはECMAScript系(JavaScriptとかActionScriptとか)のDOM結合が
使いやすかったりしなくもないので、そういう拡張が無理なくできるとうれしいのだが。
0548デフォルトの名無しさん
2007/03/14(水) 10:26:15例えば、dmd/src/dmd/*とか、厳密な意味でのオープンソースでも仕様が公開されてるし、日本人が書いたpatchをオフシャルに取り入れたりとか。
0549デフォルトの名無しさん
2007/03/14(水) 11:45:31そう言う問題じゃないし、標準ライブラリの話だし。
0550デフォルトの名無しさん
2007/03/14(水) 13:02:271週間以内になおしまっす
>>534,>>541
言語の都合に環境の方を合わせるっちゅーのは変だと思うのですが。
特定の(かなり限定された)条件の環境でしか動きませんというのは汎用言語としてはダメじゃないかなあ。
環境はOSごとマシンごとユーザー毎に違うのが当然で、それを全部吸収して
言語から統一的に扱えるようにすることこそが標準ライブラリの役目では。
0551デフォルトの名無しさん
2007/03/14(水) 13:14:19POSIXで定められた標準入出力はバイナリストリームなので、
アプリ側の出力するテキストに何のエンコーディングが使われてるかは
コンソール側ではどれか1つと仮定するしかないべ。
SJISとUTF-8なプロセスを2つ立ち上げたらどっちかが文字化け。
ckなんかはSJISもUTF-8も表示できるけど、アレも内容から推論してるだけだろうし。
1つに仮定するならどれかと言われれば、環境デフォルトので、ってのが妥当だと思う。
Walterも文字列の国際化に関してはそれほど詳しいわけじゃ無いって気がする。
「時代はUnicodeです・言語は文字列を簡単に扱えるべきです」なんて言ってた割には
まだ「英語環境でしか動作しねぇじゃん」て箇所多いし。
あっちも「マルチバイト環境のノウハウあんだろーくれよー」とか思ってんじゃ?
うちら日本人も本家にがんがんフィードバックを提供すべきなんだろうけど、
英語/日本語の壁はASCII/Shift_JISよりも厚いなぁ……。
0552デフォルトの名無しさん
2007/03/14(水) 14:51:57I18N化の泥仕事なんて、実用上は必要だけれども、退屈なだけだろうし。
しっかし、OS内部を早々とUTF-16化していたWindows NTファミリが、
UTF-8には対応しない(出来ない)ってのも、何か笑えるものがあるな。
0553デフォルトの名無しさん
2007/03/14(水) 19:46:56お世話になってます
0554デフォルトの名無しさん
2007/03/14(水) 20:32:44君達は要不要で議論してると思う。要不要で言えば有れば便利。
ここには争いが無いんですよ。
0555デフォルトの名無しさん
2007/03/14(水) 21:08:20ユーザープログラムが吐く文字コードに環境があわせるか、
ユーザープログラムが吐く文字コードを環境にあわせるか、
で考えるべきだろう、という理屈は納得できる。
(吐く出力だけじゃなくて、入力についても同じことね)
利便性を考えると、各々の(言語)ユーザーがその時々で対処するよりも、
ライブラリで既存の環境に応じて処理されるのが自然で、それを実現する
ライブラリが標準でついてくるのが当然だ、というのも分かる。
入出力を標準ライブラリ側でD言語の文字型に変換してくれるのをデフォとして、
それぞれの入出力関数について無変換(つまりubyte列)で入出力できるものを別途用意、
というのが自然だと思う。
0556デフォルトの名無しさん
2007/03/14(水) 21:29:45それはかなり言語一般に対する議論が混ざってると思う。
D言語はその言語仕様で高らかに、Unicodeが言語仕様です。
と唱えてるんだから、「本当は」とか「当然」が使えないはず。
本当はUnicodeが前提なので、当然環境に合わせる処理が必要。
と考えるのが自然。
まず、一番良いのは環境側が受け入れてくれること、(コンソールのUTF-8対応)
次にプログラムで明示すること、(作り込み)
そして最後が標準ライブラリでの対応(サービス、サービすぅう)
0557デフォルトの名無しさん
2007/03/14(水) 21:41:37肝心の Walter タンにやる気がなきゃどうにもならんなあ。
0558デフォルトの名無しさん
2007/03/14(水) 21:43:11だから、ライブラリの話だって。
Walterタンのやる気はあんまり関係ないと思う。
0559デフォルトの名無しさん
2007/03/14(水) 21:54:55> D言語はその言語仕様で高らかに、Unicodeが言語仕様です。
> と唱えてるんだから、「本当は」とか「当然」が使えないはず。
> 本当はUnicodeが前提なので、当然環境に合わせる処理が必要。
ここらへんどういう意味なのかよく分からんけど、
D言語では文字型とソースコードはUTFである、ってだけで、
D言語が想定する文字コードはそれだけだ、とは仕様は
言ってないと思うんだけど、どっかでそんなこと言ってたっけ?
0560デフォルトの名無しさん
2007/03/14(水) 21:55:17と言う考え方に立つと、日本限ってみても、標準ライブラリに当然EBCDIC対応もJEFコード対応も、
EUC対応も、TRON対応も、DEC漢字対応、ISOも必要という話になるわけで、こんな行為が、「本当は」
と言える事なのか疑問という事。
ここの交通整理をするために、D言語はその言語仕様で「Unicodeです」と宣言してるんだから、
「本当は」というのは、もの凄く間違った考え方だと思う。
0561デフォルトの名無しさん
2007/03/14(水) 21:56:26議論を混ぜ返してるだけだと思う。
他文字コード対応を標準ライブラリで行うことが、「本当は」に当たるか否かを議論してる。
0562デフォルトの名無しさん
2007/03/14(水) 22:02:23存在を言語標準に規定する方法や、実行環境の文字コードで言語を記述することを仕様とする(C言語)など、
色々有ると思う。
でも、D言語は、言語仕様でUnicodeとする道を選んでるんだから、「本当は」は使えないと思う。
0563デフォルトの名無しさん
2007/03/14(水) 22:03:21> も必要という話になるわけで
ならんでしょ。
あらゆる状況に対応することまでは要求されてないだろうし。
>>561
>560の
> ここの交通整理をするために、D言語はその言語仕様で「Unicodeです」と宣言してるんだから、
とかいうのがどこから出てきた話なのか訊いてるわけで、
混ぜ返すとかよく分からん意図じゃないよ。
0564デフォルトの名無しさん
2007/03/14(水) 22:04:54# 現状、Unicodeもだめだめだけど
0565デフォルトの名無しさん
2007/03/14(水) 22:07:26ここまでかみ砕いて説明してるのに、まだそんなこと言ってるのなら、
君は文字コードを理解してるとは思えない。
0566デフォルトの名無しさん
2007/03/14(水) 22:09:11そこで必要なのは、ICUをDに移植することだと思う。
0567デフォルトの名無しさん
2007/03/14(水) 22:10:320568デフォルトの名無しさん
2007/03/14(水) 22:18:03望み通り「コンソールがUTF-8対応」したとして、
SJISを吐くプログラムとUTF-8を吐くプログラムを
コンソール側はどうやって見分けるんだ?
0569デフォルトの名無しさん
2007/03/14(水) 22:19:17どうも議論がかみ合わないんだけど、Win厨なのか?
0570デフォルトの名無しさん
2007/03/14(水) 22:24:17乱暴な話だけど、その通りだと思う。
Winはかなり特殊な環境だと言う自覚が無いから、「本当は」とか言っちゃうんだと思う。
0571デフォルトの名無しさん
2007/03/14(水) 22:28:40あいや待たれよ、移植しただけではDのchar[]と入り乱れて混乱する。
いっそICUのUnicodeStringをDに丸ごと組み込んでStringという名を与え、
文字列リテラルもStringのインスタンスとしてしまう方が……。
0572デフォルトの名無しさん
2007/03/14(水) 22:33:180573デフォルトの名無しさん
2007/03/14(水) 22:33:57なんだよねー。
で、そうなってくると、Walterタンのやる気が問題になってくるか…
というか今更出来ないになってしまうか・・・
0574デフォルトの名無しさん
2007/03/14(水) 22:47:27> D言語はUTF-8(UNICODE)で動く
というのを、
> D言語はその言語仕様で高らかに、Unicodeが言語仕様です。と唱えてる
> ここの交通整理をするために、D言語はその言語仕様で「Unicodeです」と宣言してる
> D言語は、言語仕様でUnicodeとする道を選んでる
と拡大解釈したために、文字コード関係の標準ライブラリ対応を
> 理念を曲げる、余計な装飾を施す
と捉えて、
> 正しくはコンソールがUTF-8を表示出来るべきです。
と考えた、
ということかな。一連の引用部が同一人物かどうかは知らんけど。
http://www.kmonos.net/alang/d/overview.html
> 宗教やおおげさな哲学とも縁がありません。
> 現実的なプログラマのための、 現実的な言語です。
という(そのうえ後発言語である)D言語としては、
やっぱり標準ライブラリ対応が自然だと思った。
0575デフォルトの名無しさん
2007/03/14(水) 22:51:510576デフォルトの名無しさん
2007/03/14(水) 23:33:420577デフォルトの名無しさん
2007/03/15(木) 00:08:23>やっぱり標準ライブラリ対応が自然だと思った。
>>560
0578デフォルトの名無しさん
2007/03/15(木) 00:10:15というか、Win厨は相手に出来ないレベルの話をしてるんで、
お願いだからWin厨は出てこないで。
0579デフォルトの名無しさん
2007/03/15(木) 00:12:36同一人物でしょ。>>550でK.Inaba氏に突っ込まれてるのと同じ人じゃないの。
Javaや.NETのようにcharがUnicode文字であるような言語は
UTF-8環境でしか使えなくて当然、とでもいいたいのかね。
「現実的なプログラマのための、現実的な言語です」ってのも立派に
「理念」のウチ、なんだけどね。
>>570とかもう、アホかと。
0580デフォルトの名無しさん
2007/03/15(木) 00:15:34さしあたり問題は無い。その環境が広ければ広いほど言うことはないが。
現状では、Linuxに対応しているとは言っているが、実際にはUTF-8ロケール
でなければ明白な問題が生じるわけだ。
UTF-8ロケールにしろ、ってのは現実的な言語としては論外な選択肢。
0581デフォルトの名無しさん
2007/03/15(木) 00:18:48すでに>563で突っ込んでるな
(それに対して>565では説明放棄。説明する義務はないけど)
>>579
> 「現実的なプログラマのための、現実的な言語です」ってのも立派に
> 「理念」のウチ、なんだけどね。
意味はわかるけど、それ以上は言葉遊びになっちゃう危険が
0582デフォルトの名無しさん
2007/03/15(木) 00:25:47頭悪いだろお前達(w
0583デフォルトの名無しさん
2007/03/15(木) 00:26:04これはじめて聞いた
0584デフォルトの名無しさん
2007/03/15(木) 00:26:580585デフォルトの名無しさん
2007/03/15(木) 00:36:53使う気にならんでしょ?
皆が皆同じような変換コード書くのは馬鹿馬鹿しいでしょ?
標準ライブラリ側で吸収してくれれば皆が幸せになれるでしょ?
実際Javaとか.NETとかTclとかPythonとか、Unicode対応の言語は
皆そうやって変換してるでしょ?
そこを「UTF-8環境なら動く、そうしなさい」ってのは、Walterタンが
述べている「現実的な〜」という「理念」に合致してますか?
彼は「世界はUTF-8になるべきだ。俺はUTF-8な世界しか相手にしない」
という「理念」でも語ったんですか?
ってだけの話なんだけどね。
0586デフォルトの名無しさん
2007/03/15(木) 00:39:47> 使う気にならんでしょ?
は同意できない
0587デフォルトの名無しさん
2007/03/15(木) 00:53:47Cと同じ仕様にしてくれたほうがなんぼかマシだったかも。
0588デフォルトの名無しさん
2007/03/15(木) 01:03:15何もしたくないとかしなくて良いって言う話はしてない。
>>534での指摘を良く嫁。
標準ライブラリがやる必要は無いし、
サービスとして提供するにしても、WritefInする直前に変換するのが正しい。
0589デフォルトの名無しさん
2007/03/15(木) 01:11:34> WritefInする直前に変換するのが正しい
という理由や根拠の説明にまるでなっていないと思うのだが。
なぜ、それが正しい?
逆に言えば、プログラマに陽に変換することを強いない他の言語は、
間違っているとでも言うの?
少なくともプログラマが「陽に」変換するコードを書くスタイルは、I18N/L10Nと
真っ向から対立する。
そこで"iso-8859-1"などとエンコーディングを直接指定してしまえば、
もう他所へは持っていけないプログラムの出来上がりだ。
(無論、それが必要なことなら、そうすることも出来るべきだが)
だから、Cのlocaleシステムでは、「実行環境の」LC_CTYPE環境変数
(Windowsの場合はコードページ)を見て、よきに計らうようなデザインに
なっている。Javaも、同様のデザインがなされている。当然だろう。
0590デフォルトの名無しさん
2007/03/15(木) 01:13:13よくもまぁ、そんな稚拙な意見を長々書けると思う。
長々書くから、なんか考えてるのかな?と思えばWin厨の意見だし。
0591デフォルトの名無しさん
2007/03/15(木) 01:14:13それが正しい言語周辺の設計なんだろ。
ただ、それが現実的じゃないだけで。
0592デフォルトの名無しさん
2007/03/15(木) 01:15:290593デフォルトの名無しさん
2007/03/15(木) 01:16:480594デフォルトの名無しさん
2007/03/15(木) 01:17:07いや、実際に標準関数に自動変換は組み込まれてないわけで(w
それは言語外の提供ライブラリで行うべき仕組みと考えてる訳で、
となると、WritefInする直前に変換するのが正しいありかたなんで(w
現実と向き合えば良いと思う。
0595デフォルトの名無しさん
2007/03/15(木) 01:21:06試しにそれをなるべく移植性の高い方法で書いてみそ。
反吐が出そうになるから。
wcs系ルーチンが両可能なことを前提にするとしても、
Cのwchar_tのサイズは固定じゃないし。
0596デフォルトの名無しさん
2007/03/15(木) 01:24:03ネームスペースとか有効に活用してさ。
あとtoUTF32メソッドがあれば嬉しい。普段、文字列属性チェックとかUTF16に変換してからやってるし。
0597デフォルトの名無しさん
2007/03/15(木) 01:28:25論点ズレ杉。あるべき論の文脈として「正しい」かどうかの話を
していたのに、
現状全肯定の上で「現状ではプログラマとしてこうするのが正しい」
ってなんだそら。
0598デフォルトの名無しさん
2007/03/15(木) 01:30:58だから、有るべき論として、標準関数に頼るのは間違いという話をしてるんで。
Win厨のWin厨に取って便利という話を幾らされても困るわけ、何億回されても
聞けない。
0599デフォルトの名無しさん
2007/03/15(木) 01:31:540600デフォルトの名無しさん
2007/03/15(木) 01:32:11と、言うか汎用機〜組み込みまで一通り組んだこと無いのに
議論に参加しようとすると、相手の言い分を理解できないと思うよ。
0601デフォルトの名無しさん
2007/03/15(木) 01:33:150602デフォルトの名無しさん
2007/03/15(木) 01:35:180603デフォルトの名無しさん
2007/03/15(木) 01:36:04それ前提が間違ってるわ。
GCを採用し、内部コードをUTF-8に選んだ時点で、Dの実行環境って
かなり限定的に仮定されてると見ていいでしょ。
0604デフォルトの名無しさん
2007/03/15(木) 01:36:390605デフォルトの名無しさん
2007/03/15(木) 01:36:45違う。実行環境の外部ライブラリ、システムコール、API等とテキストを
やりとりするあらゆる場所。
0606デフォルトの名無しさん
2007/03/15(木) 01:37:47というか、彼の振りして便乗で煽ってる人がいる気がしないでもない。
0607デフォルトの名無しさん
2007/03/15(木) 01:41:58ここらへん基本はどのOSでも同じだと思うが違うのか?
VC厨およびJava厨だからわかんないです><
0608デフォルトの名無しさん
2007/03/15(木) 01:51:02日本語でおk
0609デフォルトの名無しさん
2007/03/15(木) 04:24:50外部に繋げるときは簡単に処理できるようにしてちょ
0610デフォルトの名無しさん
2007/03/15(木) 06:14:46俺は標準入出力だけ対応してくれればかまいませんが。
外部ライブラリやAPIなんて環境依存が前提の場所でない?
あるいはtangoなりなんなりコミットして書いとけば済むことかと。
0611デフォルトの名無しさん
2007/03/15(木) 06:50:410612デフォルトの名無しさん
2007/03/15(木) 07:58:12もういいよ、くだらん。
0613デフォルトの名無しさん
2007/03/15(木) 08:09:08逃げるのか。まぁ今の君の選択としてはいいんじゃないかなそれで。
次に人に絡むときは、もうちょっと勉強してからにした方がいいよ。
でないと、また同じように敗走するだけだから。
0614デフォルトの名無しさん
2007/03/15(木) 08:23:34んー。同じことだと思いますよ。
結局システムレベルの標準入出力をラップしてくれ、ちゃんと
変換してくれってことでしょう。
同様に、Dランタイムが特定のシステムコールなりAPIなりを
呼んでいる箇所では、ちゃんとエンコーディング変換を一貫して
行わないと、ユーザ側につけがまわることになります。
ユーザ側でtoMBSz()をかませば良い、と思われるかもしれませんが、現状の
toMBSz()は(機能的にはWin32に限らず必要なものであるにも関わらず)
Win32ベッタリの仕様であり、コードの移植性を保持するのが困難に
なりますし、いかにも「一時しのぎ」的で、今後のバージョンでは
それが不要になり、コードが新しいバージョンでは動かなくなる可能性も
大です。
char[]で受け取る関数にtoMBSz()で変換したホストエンコーディングの
バイト列を渡すことにも問題があります。char[]をUTF-8文字列と定めている
Dの仕様に反することですし、
例えばその関数の中で文字列を解析した上でシステムコールを呼んでいる
かも知れません。実際に文字列の中身を見ている関数に、
UTF-8以外のエンコーディングの文字列を与えることは、明らかな
問題を引き起こします。
ガタガタなコアライブラリの上に何かを積み上げようとしても、砂上の楼閣に
過ぎません。土台が駄目ではどうしようもないのです。
0615デフォルトの名無しさん
2007/03/15(木) 09:19:300616デフォルトの名無しさん
2007/03/15(木) 09:30:34ttp://www.kmonos.net/alang/d/type.html
を参照。
0617デフォルトの名無しさん
2007/03/15(木) 11:05:080618デフォルトの名無しさん
2007/03/15(木) 11:16:000619デフォルトの名無しさん
2007/03/15(木) 12:24:07argsの文字コードが環境依存することに気づいてげんなりしてきた
0620デフォルトの名無しさん
2007/03/15(木) 12:31:30コンパイラの方がおちついてPhobosを弄れる余裕ができれば
おまいらが考えるようなことはWalterタンも気づくでしょ
内部と密接に絡んでるようなthread.dが微妙なとこを見ると、
あまりPhobosはテストされてないようだし
そんなにすぐDを使いたかったらTangoを使えと
0621デフォルトの名無しさん
2007/03/15(木) 13:12:11そんな日がおとづれるのだろうか?(反語)
0622デフォルトの名無しさん
2007/03/15(木) 13:46:560623デフォルトの名無しさん
2007/03/15(木) 15:45:23おれも数年前はそう思ってた…
# 待つなら10年単位で覚悟して待て。待てないなら自分で動け
0624デフォルトの名無しさん
2007/03/15(木) 17:21:13どこか別の企業が出してくれるとか……。
Windowsアプリ開発がメインターゲットってことでGUIビルダも付けて。
というか、DigitalMarsが会社としてDをどう扱うつもりなのか、
いやそもそも、DigitalMarsがどういう会社なのかすら
サパーリ分からんのは俺だけだろうか。
0625デフォルトの名無しさん
2007/03/15(木) 17:23:480626デフォルトの名無しさん
2007/03/15(木) 17:40:520627デフォルトの名無しさん
2007/03/15(木) 19:28:200628デフォルトの名無しさん
2007/03/15(木) 20:15:00見るべき環境変数なりシステム情報なりをちゃんと見れば出来ること。
0629デフォルトの名無しさん
2007/03/15(木) 20:16:060630デフォルトの名無しさん
2007/03/15(木) 20:36:380631デフォルトの名無しさん
2007/03/15(木) 20:47:35とりあえず文字列まわりのライブラリが揃うの待ってます
0632デフォルトの名無しさん
2007/03/15(木) 20:59:410633デフォルトの名無しさん
2007/03/15(木) 21:16:190634デフォルトの名無しさん
2007/03/15(木) 21:24:260635デフォルトの名無しさん
2007/03/15(木) 21:32:050636デフォルトの名無しさん
2007/03/15(木) 21:55:36いいんじゃなかろうか。どんな実行順序だろうがやりたい放題。
0637デフォルトの名無しさん
2007/03/15(木) 23:03:56Rubyを馬鹿にするなーwww
>>543
ABA氏のゲームは、国内より、むしろ海外で有名
>>630
こるーちんて実際何に使うの?
ゲームでも微妙なのに
0638デフォルトの名無しさん
2007/03/16(金) 06:31:29えっ、びみょうなのか?
結構つかってるんだが、
世はそういう判断なのか・・・
0639デフォルトの名無しさん
2007/03/16(金) 07:15:37プログラミングが下手くそなんじゃない?
0640デフォルトの名無しさん
2007/03/16(金) 07:26:38もうしわけない
0641デフォルトの名無しさん
2007/03/16(金) 13:44:13いや、あっても、組み込みスクリプト言語レベルで実装されてりゃいいやって感じなんだけど、
使いどころある?
0642デフォルトの名無しさん
2007/03/16(金) 15:10:581フレーム分動かしてsuspend()とか?
Stateパターンするには大げさだろー、とか思う時に欲しいことがある。
でも、言語組み込みせんとコルーチンて使えないの?
0643デフォルトの名無しさん
2007/03/16(金) 15:16:22自分で状態管理する羽目になるから本末転倒だろ
0644デフォルトの名無しさん
2007/03/16(金) 16:10:470645デフォルトの名無しさん
2007/03/16(金) 22:49:43まぁ無駄なオーバーヘッドはかかるが、分野によっちゃどうでもいいだろうし。
もっと低レベルな実装だとWin32ならFiberが使えるけど、Linuxにはそういうのあるん?
0646デフォルトの名無しさん
2007/03/16(金) 23:01:490647デフォルトの名無しさん
2007/03/16(金) 23:09:54http://www.dsource.org/projects/tango/wiki/ChapterThreading
休日はじっくりtango探索でもしようか……
0648デフォルトの名無しさん
2007/03/17(土) 04:08:390649デフォルトの名無しさん
2007/03/17(土) 09:35:45効いたよ。upxは最新版使ってる?
0650デフォルトの名無しさん
2007/03/17(土) 14:29:490651デフォルトの名無しさん
2007/03/17(土) 18:56:50はガチで欲しい
0652デフォルトの名無しさん
2007/03/18(日) 11:26:05eclipse のプラグインとしての開発環境で、
現在も開発が続けられているものはないでしょうか?
0653デフォルトの名無しさん
2007/03/18(日) 11:47:34http://www.kmonos.net/alang/wnd/devenv.ja.html#ide
Descentはリアルタイムにコンパイルエラー表示してくれたりしたけど、やっぱまだまだ途上っぽ。
結局エディタ+コマンドラインに落ち着くことになるんじゃないかな……。
0654デフォルトの名無しさん
2007/03/18(日) 11:54:04D言語が普及言語を名乗るならここへんが最低水準になってくるね
最大のライバルはVC6.0だから。
0655デフォルトの名無しさん
2007/03/19(月) 03:05:370656デフォルトの名無しさん
2007/03/19(月) 03:22:51お前、本格的なGUIコンポーネントの類の開発やったことないだろ。
確かにただ作るだけならそれほど難しくはない。が、
インテリセンスのような類の機能はただ作るだけじゃそれこそ
無いほうがましだ!ぐらいの悪評を買うだけなんだよ。
0657デフォルトの名無しさん
2007/03/19(月) 08:06:57具体的には何が悪評を買わせるのか聞きたいな
0658デフォルトの名無しさん
2007/03/19(月) 08:35:320659デフォルトの名無しさん
2007/03/19(月) 11:39:50情報集めるためにレスポンス遅くなったりするしな。(これは俺の環境がしょぼいせいかもわからんが)。
0660デフォルトの名無しさん
2007/03/19(月) 12:15:290661デフォルトの名無しさん
2007/03/19(月) 15:19:34C++のは言語仕様の複雑さのせいって気がする。
インテリセンス作ろうと思ったら、
やっぱりコンパイラのソースから構文解析部分を引っこ抜いてくるのかな?
だとしたら、言語仕様がコロコロ変わるのが一番の問題なのか?
0662デフォルトの名無しさん
2007/03/19(月) 18:31:14privateな時点である意味finalみたいなもんだと思ってたんだけど
0663デフォルトの名無しさん
2007/03/19(月) 18:48:230664デフォルトの名無しさん
2007/03/19(月) 19:19:38http://www.kmonos.net/alang/d/function.html
多分finalは「決して仮想関数にならない」が保障される予感。
あとはクラス設計者の意思表示として、かなぁ。
個人的には、よほどの理由が無い限りメンバをfinalになんてして欲しくないが。
0665デフォルトの名無しさん
2007/03/19(月) 19:34:36重要な一部分だけ仮想関数の方が挙動が読みやすいし好きだな。
0666デフォルトの名無しさん
2007/03/19(月) 21:02:18C++の仕様か
関数名(と引数の型)の意味論を基準として実装を信用するか、
他者の実装を信用せず特定のクラスの実装のみを信用する、という差かと
0667デフォルトの名無しさん
2007/03/19(月) 21:05:16そんな状況でfinalにしてあったら余計ひどいことになるような気が。
0668デフォルトの名無しさん
2007/03/19(月) 22:20:000669デフォルトの名無しさん
2007/03/20(火) 01:52:27そいや意思表示の点でも同じことだよな。
んじゃprivateにfinalを重ねるのは、ほぼ意味無しと言っていいのかも。
>>665
private+finalの話とはまた違う話で恐縮なのだけど。
経験的に、予期せぬオーバーライドを行いたいってニーズは結構あった。
派生やUnitTestなんて考慮されてない既存のクラスに対してUnitTest書きたいって時に、
DBアクセスするメソッドだけスタブに置き換えるとか。
基本finalだとそういうときに融通が利かなくなっちゃうんだよねぇ。
virtualとかで”オーバーライド考慮してます”ってマーク付けられるのは良い事だと思うけど。
0670デフォルトの名無しさん
2007/03/20(火) 01:58:420671デフォルトの名無しさん
2007/03/20(火) 07:22:550672デフォルトの名無しさん
2007/03/20(火) 08:18:320673665
2007/03/20(火) 12:58:46オーバーライドを意識してないメソッドをオーバーライドって
元のコードを丹念に追いかけないと何が起こるか予測しきれないから恐くて自分は出来ない。
で、元のコードを追いかけるなら元のコードを,
ついでに継承を意識した形に置き換えちゃうから結局基本finalでも自分は困らないんだよな。
自分の場合は元のコードを弄れる状況が多いからこういう持論になるけど、
こればっかは普段相手にするコードの種類によって考えもかわってくるんでしょうね。
0674デフォルトの名無しさん
2007/03/21(水) 00:28:05サーセン、Javaの癖でconstと間違えました……
0675デフォルトの名無しさん
2007/03/22(木) 00:37:06Objectクラスのインターフェースから変わってるとか、
ちょっとそーいう感覚は無かったからビックリ。
標準ライブラリを変えるというのが何を意味するのかなんて
深く考えてなかったんだなぁ俺。
Dを追っかけ始めてからなんか色々と、
普段気にしないような知識が身に付いてきた気がする……。
0676デフォルトの名無しさん
2007/03/22(木) 01:30:340677デフォルトの名無しさん
2007/03/22(木) 02:27:07tango.core.Memoryをimportしてgc.disable()とかするらしい。
実装自体はパッと見、Phobosのをまんま流用してるように見える。
細かいところは違うのかもしれんけど。
標準として採用されて、パッケージ名の先頭のtango.取れんかな。
あとutil.以下の諸々も、util.外して一階層上げていい気が。
0678デフォルトの名無しさん
2007/03/22(木) 16:30:280679デフォルトの名無しさん
2007/03/23(金) 07:01:160680デフォルトの名無しさん
2007/03/23(金) 07:01:400681デフォルトの名無しさん
2007/03/23(金) 09:57:37乗り換えるのはめんどくさい。
tangoはjava.*みたいなかんじで、
d.*とかにしてしまうとかがいいかもね。
0682デフォルトの名無しさん
2007/03/23(金) 15:01:27phobos.*とtango.*がいいと思う
0683デフォルトの名無しさん
2007/03/23(金) 15:34:58buildでコンパイルするんだな。
下手な翻訳でもしてみるか。。。
0684デフォルトの名無しさん
2007/03/23(金) 18:09:26影でひっそり応援するよ
0685デフォルトの名無しさん
2007/03/23(金) 18:28:57なのでそろそろD言語独自の中間コンパイル形式が欲しくなってきたなぁ、と思う今日この頃。
プロジェクト内にポンと単一のファイルをコピーして、
$ dmd myapp.d some_d_library.dlib
とかできれば楽なのになー。
現状の*.libと*.diをまとめてtar化する程度の手間でできんもんかな。
0686デフォルトの名無しさん
2007/03/23(金) 22:12:07つ sc.ini
0687デフォルトの名無しさん
2007/03/25(日) 00:32:080688デフォルトの名無しさん
2007/03/25(日) 01:30:33っていうかイミフ
0689デフォルトの名無しさん
2007/03/25(日) 04:54:030690デフォルトの名無しさん
2007/03/25(日) 20:37:060691デフォルトの名無しさん
2007/03/25(日) 22:40:440692デフォルトの名無しさん
2007/03/26(月) 01:02:20してくれんかな。。。
俺もプラグイン作ってみたいけど、
英語の資料しかない。
0693デフォルトの名無しさん
2007/03/26(月) 11:51:02誰か適当でいいので翻訳手伝って欲しいです。
一人じゃ手におえそうにないし、気力も持たん。
0694デフォルトの名無しさん
2007/03/26(月) 13:35:10VSIP SDKって使用するのにマイクロソフトと特別な契約交わして
クローズドソースにしないといけなかったと記憶してるんだが、改定されたんかな。
0695デフォルトの名無しさん
2007/03/26(月) 15:22:31うーむ、そういう項目は見たことないんだけど。
Affiliateが無料で、その上が再販権とか宣伝協力があって有料じゃないのかな。
まぁそういうのあるならしょうがないか。
0696デフォルトの名無しさん
2007/03/26(月) 18:37:000697デフォルトの名無しさん
2007/03/26(月) 18:50:15Object.factory()はリフレクション関係…?
0698デフォルトの名無しさん
2007/03/26(月) 19:28:57* Added template partial specialization derived from multiple parameters.
複数パラメータの(?)テンプレートの部分特殊化を追加
* Added Object.factory(char[] classname) method to create class objects based on a string.
文字列からクラスオブジェクトを作成するメソッド Object.factory(char[] classname) を追加
* Added std.gc.malloc(), std.gc.extend() and std.gc.capacity().
* Added std.string.isEmail() and std.string.isURL().
* Added std.stdio.readln().
* Improved gc performance for array resize and append.
配列のリサイズと追加時におけるガベコレのパフォーマンスを向上
* Bugzilla 64: Unhandled errors should go to stderr
ハンドルされていないエラーを標準エラー出力に出力
* Added predefined Ddoc macro DOCFILENAME
組み込み Ddoc マクロ DOCFILENAME を追加
一番上がよくワカラン。
0699デフォルトの名無しさん
2007/03/26(月) 19:30:14Page って、コードページのことか?
0700デフォルトの名無しさん
2007/03/26(月) 19:45:12ttp://www.digitalmars.com/d/cppstrings.html
この「ページ」のことだよ。
0701デフォルトの名無しさん
2007/03/26(月) 19:54:53が気になる。
0702デフォルトの名無しさん
2007/03/26(月) 20:01:04ああ、なるほど。
0703デフォルトの名無しさん
2007/03/26(月) 20:49:15ttp://www.digitalmars.com/d/template-comparison.html
ここでpartial specializationとページ内検索すれば例が出てくる
Partial specialization derived from multiple parameters
// D
class Foo(T : Bar!(T, U), U)
{
...
}
// C++
template<class T, class U>
class Foo< Bar<T,U> >
{
...
};
0704デフォルトの名無しさん
2007/03/26(月) 23:23:05素晴らしい。大規模アプリに使えないとか言えなくなってきてる。
気がする。
0705デフォルトの名無しさん
2007/03/27(火) 00:11:160706デフォルトの名無しさん
2007/03/27(火) 00:12:280707デフォルトの名無しさん
2007/03/27(火) 00:34:180708デフォルトの名無しさん
2007/03/27(火) 00:43:53って感じのエラーが連発して出るんですが、何をしくじってるんでしょう?
インストーラーのTangoを使ってみたんですが。
スイッチしても戻しても同じエラーが・・・
0709デフォルトの名無しさん
2007/03/27(火) 00:49:00tangoはまだdmd 1.010に対応していない。
0710デフォルトの名無しさん
2007/03/27(火) 01:00:30ありがとう。
動きました。その上日本語も出た。
ウホ
0711デフォルトの名無しさん
2007/03/27(火) 01:11:09なんで >>708 がエラーになるようになったんだ
0712デフォルトの名無しさん
2007/03/27(火) 01:18:58ClassInfoの構造が変わった。
0713デフォルトの名無しさん
2007/03/27(火) 01:24:11そうか
�dくす
0714デフォルトの名無しさん
2007/03/27(火) 03:00:12C:\dmd\import\dfl\internal\dlib.d(27): module Thread cannot read file 'tango\core\Thread.d'
該当するソースを見ても何がわるいんかわかりません。
DFLとTangoはインストーラーでインスコしました。
TangoのLibフォルダの中身空っぽなんですが。
これはまずってますか?
0715デフォルトの名無しさん
2007/03/27(火) 03:54:010716デフォルトの名無しさん
2007/03/27(火) 03:58:16-v1オプションはマジで飾りか?w
0717デフォルトの名無しさん
2007/03/27(火) 04:21:10コンパイルは出来てもEXEができんくなったり
EXEが出来てるのに実行しても何もおこらんかったり。
import.dがないと連呼されたりと。
0718デフォルトの名無しさん
2007/03/27(火) 12:18:370719デフォルトの名無しさん
2007/03/27(火) 12:48:02dmd .1007とdmを解凍後にC:\直下においてパスを通し、
その後DFLインストーラー・Tangoインストーラーを実行して
Rebuildをdmdフォルダに。
後は適当なサンプルを
-Ic:\dmd\import -Ic:\dmd\tango -dc=dmd-win-tango -debug -v1 -L/exet:nt/su:windows:4.0
をつけてrebuildしたら出来ました。
Poseidonでも再生マークついてる所いじったらいけました。
0720デフォルトの名無しさん
2007/03/27(火) 22:20:440721デフォルトの名無しさん
2007/03/27(火) 22:52:410722デフォルトの名無しさん
2007/03/28(水) 00:16:34ここしばらく放置気味だからなあ>DWT
DFLは文字コード周りが適当だったのが多少改善されてきたらしいし。
結構いいんじゃないかなと。
わなDで推奨されてたwxDはマルチプラットフォームは嬉しいんだけどexeがちょっとデブ過ぎませんか。
0723デフォルトの名無しさん
2007/03/28(水) 00:37:16Javaみたいにライブラリが乱造された世界が結構好きなので期待。
0724デフォルトの名無しさん
2007/03/28(水) 11:20:470725デフォルトの名無しさん
2007/03/29(木) 01:55:45なんでかしらんけど。
0726デフォルトの名無しさん
2007/03/29(木) 02:36:450727デフォルトの名無しさん
2007/03/29(木) 07:25:19言語仕様として似たようなのあるのかな?
0728デフォルトの名無しさん
2007/03/29(木) 11:02:13複数の関数を登録したいなら
独自クラス作る事になるのかな。
なんかライブラリにないのかな?
0729デフォルトの名無しさん
2007/03/29(木) 11:15:55自分で作っても難しくなさそうなもんだが。
0730デフォルトの名無しさん
2007/03/29(木) 13:40:110731デフォルトの名無しさん
2007/03/29(木) 14:28:40tangoの方も同じものが追加されるんだろかね。
というか、コレObjectのstaticメソッドでなく普通の関数じゃ駄目だったのか?
ちゅーか、クラス情報てコンパイル後も必ず残るようになってたのか。
メタ情報はビルド時にだけ使われてexe生成後には綺麗さっぱり消えてる、
そんな鮮やかさが好きなのに。
0732デフォルトの名無しさん
2007/03/29(木) 19:19:070733デフォルトの名無しさん
2007/03/29(木) 20:45:350734デフォルトの名無しさん
2007/03/29(木) 22:22:370735デフォルトの名無しさん
2007/03/29(木) 22:41:08試したことは無いんだけど、これじゃだめなの?
0736デフォルトの名無しさん
2007/03/29(木) 22:50:150737デフォルトの名無しさん
2007/03/30(金) 02:06:110738デフォルトの名無しさん
2007/03/30(金) 08:54:330739デフォルトの名無しさん
2007/03/30(金) 11:00:52コアの部分はかぶってるし、Phobosにしかないクラスとかは
個別にコンパイルして使えばいいじゃん
0740デフォルトの名無しさん
2007/03/30(金) 13:10:11WideCharToMultyByte直呼びだとWin依存だし、
wcstombsでもwchar_tの扱いとかsetlocale()とか色々メドイし、
ああ自分でやりたくない。
0741デフォルトの名無しさん
2007/03/30(金) 13:44:30というかそんな長いもんでもないしコピペしてくればいいじゃん
0742デフォルトの名無しさん
2007/03/30(金) 16:43:090743デフォルトの名無しさん
2007/03/30(金) 19:02:15Tangoって日本語おkじゃないの
0744デフォルトの名無しさん
2007/03/30(金) 20:33:03tango用phobosが入っていた最後のリビジョン
http://www.dsource.org/projects/tango/browser/trunk?rev=1236
ページ下部にある Zip Archive のリンクからダウンロードできる。
ソースは少し古いので、多少修正が必要。
中のphobosフォルダを配置して、そのlibを作成したら、
tangoとphobosの混在使用できました。(Win32)
0745デフォルトの名無しさん
2007/03/30(金) 20:37:290746デフォルトの名無しさん
2007/03/31(土) 00:43:30click ~= delegate(Object sender, EventArgs ea)
{
msgBox("befu");
};
無反応です。
wndProckとかオーバーライドしてやれという事ですか。
0747デフォルトの名無しさん
2007/03/31(土) 01:51:56ListViewだけか。
なんでだろう。
0748デフォルトの名無しさん
2007/03/31(土) 22:49:35char[]->char*は.ptr渡せばいいみたいなんですが、
char*->char[]の方法がわかりません。
cast(char[])とやってもキャストできんと言われてしまうんですが、
どうすればいいんでしょうか。
0749デフォルトの名無しさん
2007/03/31(土) 22:53:25>char[]->char*は.ptr渡せばいいみたいなんですが、
よくない。std.string.toStringz使うべき。
>cast(char[])とやってもキャストできんと言われてしまうんですが、どうすればいいんでしょうか。
std.string.toString
0750デフォルトの名無しさん
2007/04/01(日) 00:52:24ありがとうございます。
0751デフォルトの名無しさん
2007/04/01(日) 15:02:46ttp://up.uppple.com/src/up2852.zip
詳しくは同梱のreadme読んでね
0752デフォルトの名無しさん
2007/04/01(日) 23:24:31お節介かもしれないけどCの文字列とDの文字列は全然違うものだよ。
0753デフォルトの名無しさん
2007/04/03(火) 09:48:470754デフォルトの名無しさん
2007/04/03(火) 15:25:530755デフォルトの名無しさん
2007/04/03(火) 23:46:370756デフォルトの名無しさん
2007/04/04(水) 00:54:470757デフォルトの名無しさん
2007/04/04(水) 21:48:34> (標準で添付されているphobos.libは-gなしでコンパイルされているため、
> 実はうまくリフレクションが効きません。phobosを-gつきで
> コンパイルし直すのが推奨されています。)
phobosを-g付きでコンパイルする方法をどなたかまとめてもらえませんか?
0758デフォルトの名無しさん
2007/04/04(水) 22:53:080759デフォルトの名無しさん
2007/04/04(水) 23:34:21以前、俺も少し戸惑ったよ。 その時のメモより…
dmd/src/phobos/ にある、 .MAKファイルをテキストエディタで開く。
DMD=\dmd\bin\dmd
CC=dmc
などとある行の、各コンパイラのパスを、自分の環境に合うよう書き換える。
DFLAGS=-O -release -nofloat -w
とある行に、-g を書き加える。 編集が終わったら保存して閉じる。
dmd/src/phobos/minit.obj のファイル更新日時を、
dmd/src/phobos/internal/minit.asm よりも新しくしておく。(アセンブルにはmasmが必要!?)
dmd/src/phobos/ をカレントフォルダにしてから、makeを実行
例: make phobos.lib -f win32.mak
しばらくすると、カレントフォルダに phobos.lib が作成されるはず。それをlibフォルダへ入れる。
dmd/src/phobos/ に作成された大量のオブジェクトファイルは不要なので削除していい。
だけど minit.obj だけは、今後のmakeの為に残して置く。
0760デフォルトの名無しさん
2007/04/04(水) 23:42:44後でやってみる
0761759
2007/04/04(水) 23:44:32「ファイル更新日時を新しく・・・」は、更新日時を書き換えるツールなどで行います。
これは、アセンブルを回避したいためです。
0762デフォルトの名無しさん
2007/04/05(木) 00:03:53どうにも、コードのエラーチェックはしてくれるのですが、コンパイルされないし、
そもそも構成及び実行でも、Dらしきものが出てきません。
Eclipse3.2 なのですが、それがまずいのでしょうか?
0763デフォルトの名無しさん
2007/04/05(木) 00:07:29cygwin 入れてるんで touch minit.obj した
> dmd/src/phobos/ にある、 .MAKファイルをテキストエディタで開く。
いじった .mak ファイルは2つ
dmd\src\phobos\win32.mak
dmd\src\phobos\internal\gc\win32.mak
さて phobos.lib はできたがちゃんと使えるかな?
0764デフォルトの名無しさん
2007/04/05(木) 00:14:18これのサンプルを実行してみたが
>hello
Error: ArrayBoundsError hello(10)
としか表示されないな・・・再コンパイル前と状況は変わらないようだ
何が悪いのでしょうか?
0765デフォルトの名無しさん
2007/04/05(木) 08:12:30グリッドついてるしW系APIメインで使われてるし
これは使えるのかなと思ったら1年以上更新されてないのね><
0766デフォルトの名無しさん
2007/04/05(木) 12:16:490767デフォルトの名無しさん
2007/04/05(木) 12:18:090768デフォルトの名無しさん
2007/04/05(木) 12:54:49D 1.010で
>> Bugzilla 64: Unhandled errors should go to stderr
ていう変更が入ったせい。
flectionedはException.printを置き換えて表示を変更してるんだけど、
DMDがException.printじゃなくてException.toStringを使うようになた。
0769デフォルトの名無しさん
2007/04/05(木) 14:55:08まだ最新版には対応してなかったのか
残念
0770デフォルトの名無しさん
2007/04/05(木) 18:56:59DMDの仕様変更が活発である限り常にそう
0771デフォルトの名無しさん
2007/04/05(木) 19:04:02SUBSYSTEM CONSOLE,4.0
^
main.def(2) : Error 52: .DEF Syntax Error
SUBSYSTEM CONSOLE,4.0
これは一体何のエラーでしょうか。
0772デフォルトの名無しさん
2007/04/05(木) 19:43:49まあね
丁度 flectioned を使おうと思ったタイミングで
それが使えなくなるような変更があったなんて
運悪すぎだろ常識的に考えてとかおもて
早く更新されないかなー
0773デフォルトの名無しさん
2007/04/05(木) 20:11:410774デフォルトの名無しさん
2007/04/06(金) 17:14:54DMDの仕様変更が活発である限りそれはやめたほうがいい
0775デフォルトの名無しさん
2007/04/06(金) 17:16:29{
assert (&good[1] - &good[0] == 1); // ok
assert (&bad[1] - &bad[0] == 1); // !!!!!??????
if (bad.ptr == good.ptr) // 静的配列ってポインタ渡しだっけ?
{
assert (&bad[0] == &good[0]); // ok
assert (&bad[1] == &good[1]); // !!!!!??????
}
}
void main()
{
float[2] test;
tester(test, test);
}
なぜだ……
0776デフォルトの名無しさん
2007/04/06(金) 19:27:450777デフォルトの名無しさん
2007/04/06(金) 19:29:17http://www.kmonos.net/alang/d/abi.html
>静的な配列を関数へ渡すと、例え静的な配列として宣言されていても、
>結果は実際には静的配列への参照となります。
ということで、静的配列は参照渡しされますね。
0778デフォルトの名無しさん
2007/04/06(金) 21:00:40適当に試してみたけど
assertが失敗するのはdmdのバグっぽいから適当に報告するのが吉。
0779デフォルトの名無しさん
2007/04/08(日) 20:50:26英語の達者な誰か報告したって。
0780デフォルトの名無しさん
2007/04/08(日) 23:00:43テストめんどいから最小の再現コード張って
0781デフォルトの名無しさん
2007/04/09(月) 20:48:38class MyForm: dfl.form.Form
{dfl.treeview.TreeView treeView1;
this()
{ text = "My Form";
clientSize = dfl.drawing.Size(240, 245);
treeView1 = new dfl.treeview.TreeView();
treeView1.name = "treeView1";
treeView1.bounds = dfl.base.Rect(0, 0, 232, 228);
treeView1.parent = this;
TreeNode tn = new TreeNode("hoge");
tn.nodes.add("omg");
treeView1.nodes.add(tn);
treeView1.click ~= &testClick;
treeView1.doubleClick ~= &testClick;
}
void testClick(Object sender, EventArgs e)
{
msgBox("piko-n");
}
}
int main()
{
Application.run(new MyForm());
return 0;
}
他のダブルクリックとかは何やっても正常。
HitTestですらラベル無視なんだけど、なんでだろう。
0782デフォルトの名無しさん
2007/04/09(月) 21:00:15ダブルクリックイベントでHitTestするとすべて正常。
やっぱりクリックだけぽい。
0783デフォルトの名無しさん
2007/04/10(火) 00:44:28これを呼び出すと
Symbol Undefined _filemode
と出てリンクができなくなってしまいます。
何かコンパイルオプションをつける、環境変数を指定する等しなければならないことがあるのでしょうか。
それともDMDのバージョンが古い(1.005)のが原因なのでしょうか。
0784デフォルトの名無しさん
2007/04/10(火) 00:55:00うちの std.c.stdio にはないけど?(dmd1.010)
0785デフォルトの名無しさん
2007/04/10(火) 01:05:30確かに click は + - でしか反応しないけど
afterSelect / beforeSelect を使えばいいのでは?
0786デフォルトの名無しさん
2007/04/10(火) 04:06:04bud.exe とソースコードをdmd.exeと同じフォルダに入れたら成功したので
環境変数の問題だと思うのですが、どうすればいいのでしょうか。
Error: bud:Unable to find Config File 'sc.ini' in
[.\,,C:\Documents and Settings\ユーザ名,C:\作業フォルダ\]
0787デフォルトの名無しさん
2007/04/10(火) 05:43:48すいません。間違えました。
filenoでした。
extern(C) int fileno(int);
とかやってもだめでした。
0788デフォルトの名無しさん
2007/04/10(火) 05:48:57非標準だし
0789デフォルトの名無しさん
2007/04/10(火) 06:15:470790デフォルトの名無しさん
2007/04/10(火) 07:36:260791デフォルトの名無しさん
2007/04/10(火) 12:04:17そういうインライン関数作っちゃえ。
0792デフォルトの名無しさん
2007/04/10(火) 14:01:38としても効かんな。なんでだろ
0793783
2007/04/10(火) 16:03:35といわけでこんなプログラムを書いてみた。
import std.c.stdio;
version(Windows) extern(C) int setmode(int, int);
char[] readStdIn(ulong size) {
char[] buf;
char c;
version(Windows) {
int O_BINARY = 0x8000;
setmode(stdin._file, O_BINARY);
}
while(buf.length < size && (c = getchar) != EOF)
buf ~= c;
return buf;
}
void main() {
char[] str = readStdIn(500000);
FILE* fp = fopen("output.jpg", "wb");
fwrite(str.ptr, str.length, 1, fp);
fclose(fp);
}
test.exe < input.jpg
とやってみても壊れたファイルしか出力されませんでした。
テキストを入力して実験した結果、バイナリモードに切り替わっていないようです。
同じようなCのプログラムを書いてみたところ、
BCCならきちんとバイナリモードになっていましたが、DMCはテキストモードのままでした。
どうやらDMCのバグか仕様の予感です。
0794デフォルトの名無しさん
2007/04/10(火) 16:12:570795デフォルトの名無しさん
2007/04/10(火) 16:22:510796デフォルトの名無しさん
2007/04/10(火) 16:44:240797デフォルトの名無しさん
2007/04/10(火) 16:51:530798デフォルトの名無しさん
2007/04/10(火) 17:02:340799デフォルトの名無しさん
2007/04/10(火) 21:49:110800デフォルトの名無しさん
2007/04/11(水) 00:15:020801デフォルトの名無しさん
2007/04/11(水) 02:34:20extern (Windows) HANDLE GetStdHandle(DWORD nStdHandle);
const STD_INPUT_HANDLE = -10;
const STD_OUTPUT_HANDLE = -11;
void main()
{
auto din2 = new File(GetStdHandle(STD_INPUT_HANDLE), FileMode.In);
auto dout2 = new File(GetStdHandle(STD_OUTPUT_HANDLE), FileMode.Out);
auto buffer = new ubyte[256];
while (true)
{
auto len = din2.read(buffer);
if (len == 0) break;
dout2.write(buffer[0..len]);
}
}
こうか?
0803デフォルトの名無しさん
2007/04/11(水) 09:20:55freopen("CON","rb",stdin);
でいけるからこれでいいんじゃね?
0804デフォルトの名無しさん
2007/04/11(水) 21:43:551.0越えたら手を付けてみようと思ってたんで、今後このスレにはお世話になると思います。
よろしくお願い
0805デフォルトの名無しさん
2007/04/11(水) 21:45:28今までと変わらず仕様変更してます。
どう見ても名前だけです。
本当にありがとうございました。
0806デフォルトの名無しさん
2007/04/11(水) 22:53:440807デフォルトの名無しさん
2007/04/11(水) 23:02:34-v1 が1.0互換で、
-v はverboseなんじゃないの?
0808デフォルトの名無しさん
2007/04/11(水) 23:07:310809デフォルトの名無しさん
2007/04/11(水) 23:09:52すまんそのとおり
0810デフォルトの名無しさん
2007/04/12(木) 01:04:09標準入力とCONでは意味が違う。
リダイレクトやパイプ越しのケースがあるからな。
Cランタイムライブラリに依存せず標準入力から読み出したければ
GetStdHandle(STD_INPUT_HANDLE)でハンドル取ってきて
ReadFile()
これでいい。
0811デフォルトの名無しさん
2007/04/12(木) 07:44:570812デフォルトの名無しさん
2007/04/12(木) 07:48:560813デフォルトの名無しさん
2007/04/12(木) 08:01:35むっちゃ古い
k.inabaさん以外全部沈没
0814デフォルトの名無しさん
2007/04/12(木) 08:05:180815デフォルトの名無しさん
2007/04/12(木) 08:16:10これ壊れてない? 目次だけで内容が見れないんだけど。 vista で見てるからかなぁ?
0816デフォルトの名無しさん
2007/04/12(木) 11:57:090817デフォルトの名無しさん
2007/04/12(木) 12:41:120818デフォルトの名無しさん
2007/04/12(木) 13:29:12ttp://support.microsoft.com/kb/902225/ → 方法2
0819デフォルトの名無しさん
2007/04/12(木) 13:55:14Apr 11, 2007
New/Changed Features
Extended Codeview symbolic debug output with LF_OEM types.
Extended Dwarf symbolic debug output with DW_TAG_darray_type, DW_TAG_aarray_type, and DW_TAG_delegate types.
Added keywords ref and macro.
final classes cannot be subclassed.
final for variables now works.
ref now works as a replacement for inout.
Fixed so multiple type inferring declarations like auto a=1,c=2; works.
Bugs Fixed
Fixed problem with overloading of function templates that have the same template parameter list, but different function parameters.
Fixed problems with type deduction from specializations that are template instances.
Fixed assert template.c(2956) s->parent
Got .property to work for typeof.
Fixed bug in DW_AT_comp_dir output for some linux versions.
D.announce/8027
D.announce/8047
D/51800
Bugzilla 1028: Segfault using tuple inside asm code.
Bugzilla 1052: DMD 1.009 - aliasing functions from superclasses may result in incorrect conflicts
Bugzilla 1080: Failed to link to std.windows.registry
Bugzilla 1081: with using real and -O option, dmd generate bug code
Bugzilla 1082: The .offsetof property yields a signed int, a size_t would be more appropriate
Bugzilla 1086: CodeView: missing line information for string switch
Bugzilla 1092: compiler crash in ..\ztc\cod1.c 2528
Bugzilla 1102: switch case couldn't contain template member
Bugzilla 1108: Indexing an int[] not evaluatable at compile time
Bugzilla 1122: dmd generate bad line number while reporting error message
0820デフォルトの名無しさん
2007/04/12(木) 14:02:31「inoutはrefに置き換えるかもしれません」って確かに言ってたけど!
0821デフォルトの名無しさん
2007/04/12(木) 14:13:22いつかはやらなくちゃだったかもだけど、1.00になったときがよかったなぁ
0822デフォルトの名無しさん
2007/04/12(木) 14:46:210823デフォルトの名無しさん
2007/04/12(木) 15:32:120824デフォルトの名無しさん
2007/04/12(木) 16:14:34なんか二進数みたいに見えてきた・・・orz
0825デフォルトの名無しさん
2007/04/12(木) 16:16:160.D0.1011
0826デフォルトの名無しさん
2007/04/12(木) 18:17:07その投稿時間はネタに合わせたのか
0827デフォルトの名無しさん
2007/04/12(木) 19:49:04みらくるだなぁ
0828デフォルトの名無しさん
2007/04/12(木) 20:44:25警察に捕まりました。
0829デフォルトの名無しさん
2007/04/12(木) 20:50:07上手いねえ
0831デフォルトの名無しさん
2007/04/13(金) 06:46:320832デフォルトの名無しさん
2007/04/13(金) 10:49:14見た目はdmdでも、.ddocファイルで指定すれば、在る程度好きなようになるでしょ。
.ddocでユニークな文字列を埋め込んでおいて、スクリプトなどで再加工するとか…。
0833デフォルトの名無しさん
2007/04/13(金) 13:44:06バグ修正オンリーか
0834デフォルトの名無しさん
2007/04/13(金) 16:27:230835デフォルトの名無しさん
2007/04/14(土) 09:08:50candydocとかいいかんじかも。
0836デフォルトの名無しさん
2007/04/15(日) 01:22:12最近始めたものですが、無名クラスについて教えていただけないですか。
Java で書くと以下のようになるものは、Dだとどのように書けば良いのでしょうか。
Player player = new Player(new Strategy(){
public void method() {
}});
0837デフォルトの名無しさん
2007/04/15(日) 01:39:16public void method() { }
});
0838デフォルトの名無しさん
2007/04/16(月) 05:31:38サンクス。
無駄に格好いいなこれw
0839デフォルトの名無しさん
2007/04/16(月) 12:23:530840デフォルトの名無しさん
2007/04/16(月) 13:23:20DでCGIするって話?
0841デフォルトの名無しさん
2007/04/16(月) 17:45:130842デフォルトの名無しさん
2007/04/16(月) 21:41:05ここくらいしか知らない
0843デフォルトの名無しさん
2007/04/16(月) 21:52:100844デフォルトの名無しさん
2007/04/17(火) 03:52:070845デフォルトの名無しさん
2007/04/17(火) 04:19:04PHPとかとはまた違った面白さがありそうだが。
0846デフォルトの名無しさん
2007/04/17(火) 04:49:420847デフォルトの名無しさん
2007/04/17(火) 09:23:200848デフォルトの名無しさん
2007/04/17(火) 09:26:470849デフォルトの名無しさん
2007/04/17(火) 10:03:031.4MB以上のファイルを食べさせるとしぬという素敵仕様になってしまったorz
0850デフォルトの名無しさん
2007/04/17(火) 10:06:310851デフォルトの名無しさん
2007/04/17(火) 10:15:44D でライブラリ作る気しないなあ。
0852デフォルトの名無しさん
2007/04/17(火) 11:47:190853デフォルトの名無しさん
2007/04/17(火) 12:18:31Cで使えればDでも使えますが
ttp://www.kmonos.net/alang/wnd/topics/ddbi.ja.html
こんなのもあります
0854デフォルトの名無しさん
2007/04/17(火) 12:21:48DMD1.012だとDirectXのヘッダーとかDFLとか使えなくなったし
自分ですぐ直せるけど早く公式の方で対応されないかなー
0855デフォルトの名無しさん
2007/04/17(火) 12:27:000856デフォルトの名無しさん
2007/04/17(火) 13:08:240857デフォルトの名無しさん
2007/04/17(火) 17:06:360858デフォルトの名無しさん
2007/04/17(火) 17:09:290859デフォルトの名無しさん
2007/04/17(火) 18:31:300860デフォルトの名無しさん
2007/04/17(火) 19:44:52なんていう機能があるんですか。
0861デフォルトの名無しさん
2007/04/17(火) 19:46:160862デフォルトの名無しさん
2007/04/17(火) 19:52:28これでjarみたいなリンクが出来たら主戦言語にかえるかも。
0863デフォルトの名無しさん
2007/04/17(火) 19:55:120864デフォルトの名無しさん
2007/04/17(火) 19:55:34s/ref/ref_/g
s/inout/ref/g
としないと死ねるぞ
0865デフォルトの名無しさん
2007/04/18(水) 16:53:15Mac OS X 10.3.9 PowerPCなんだけど4bytes未満のデータをboxするとデータが壊れる。
0866デフォルトの名無しさん
2007/04/18(水) 17:09:49しかもリトルエンディアン前提でコード書いてやがる。まあ仕方ないか。
0867デフォルトの名無しさん
2007/04/18(水) 19:15:01void func(void[] v) { }
void main() { func(cast(void[])['a']); }
で落ちる。
0868デフォルトの名無しさん
2007/04/18(水) 19:58:24void main() { void[] v = cast(void[])['a']; }
配列リテラルを void[] にキャストするのが無理っぽいね。
0869デフォルトの名無しさん
2007/04/18(水) 19:59:08void main() { cast(void[])['a']; }
これだけでいいか。
0870デフォルトの名無しさん
2007/04/18(水) 20:16:150871デフォルトの名無しさん
2007/04/18(水) 20:27:51落ちない gdc 0.23 @ Mac OS X 10.3.9 PowerPC
0872デフォルトの名無しさん
2007/04/18(水) 21:27:12gdc 0.21 @ MacOSX 10.4.9 Core 2 Duo
0873デフォルトの名無しさん
2007/04/18(水) 23:53:54class foo(T...)
{
int opApply(int delegate(ref T) dg)
{
int result = 0;
return result;
}
}
void poo()
{
foo!(int) hoge;
foreach(int i ; hoge)
{
}
}
Compile Error:
function foo!(int).foo.opApply (int delegate(ref (int)))
does not match parameter types (int delegate(ref int __applyArg0))
foreachを動作させるにはどうすればよいのでしょうか?
どなたかご教授お願いいたしますm(_ _)m
0874デフォルトの名無しさん
2007/04/19(木) 00:07:34Tが複数なんだから
int opApply(int delegate(ref T[0]) dg)
あと foo!(int) hoge; は
auto hoge = new foo!(int);
それともタプルをforeachで回したいのかな
0875デフォルトの名無しさん
2007/04/19(木) 00:12:36foo!(int,int)とやればforeach(int i, int n; hoge)に対応できる、
ってやりたいんじゃない?
0876デフォルトの名無しさん
2007/04/19(木) 00:19:47はい、そのとおりです
0877デフォルトの名無しさん
2007/04/19(木) 07:41:46import std.metastrings;
template F(int i,T...){
static if(T.length == 0)
const char[] F="";
else
const char[] F="ref T["~ToString!(i)~"]" ~
(i+1==T.length?"":","~F!(i+1,T[1..$]));
}
struct A(T...){
mixin("alias int delegate("~F!(0,T)~")dg_t;");
int opApply(dg_t dg){
return 0;
}
}
void main(){
A!(int,char)X;
A!(int)Y;
foreach(int x,char c;X){}
foreach(int y;Y){}
}
0878873
2007/04/19(木) 12:38:15ありがとうございます!無事動作しました。
ただ、
(i+1==T.length?"":","~F!(i+1,T[1..$]));
だと期待する動作ではなかったので(引数が一つ足りない)、
(i==T.length?"":","~F!(i+1,T[1..$]));
とさせていただきました。
文字列mixin、すごいですねえ!!
0879デフォルトの名無しさん
2007/04/19(木) 14:57:540881デフォルトの名無しさん
2007/04/19(木) 15:31:090882デフォルトの名無しさん
2007/04/19(木) 17:27:220883デフォルトの名無しさん
2007/04/19(木) 18:49:12バグ報告? 自分で修正してパッチ公開だろ。
そのコードが良かったら誰かがいつかマージしてくれる。
0884デフォルトの名無しさん
2007/04/19(木) 18:51:00bugzilla
0885デフォルトの名無しさん
2007/04/20(金) 06:24:59DMD 1.013 リリース
0886デフォルトの名無しさん
2007/04/20(金) 07:33:15バグ潰しか
0887デフォルトの名無しさん
2007/04/20(金) 08:44:430888デフォルトの名無しさん
2007/04/20(金) 11:54:540889デフォルトの名無しさん
2007/04/20(金) 13:49:000890デフォルトの名無しさん
2007/04/20(金) 15:57:00D言語ってそうゆうワクワク感がいいですよね。
アップデートを確認してバグが大量にフィックスされていた時は
いつも感動の連続ですよ。
0891デフォルトの名無しさん
2007/04/20(金) 15:59:110892デフォルトの名無しさん
2007/04/20(金) 21:55:550893デフォルトの名無しさん
2007/04/20(金) 22:02:000894デフォルトの名無しさん
2007/04/21(土) 00:49:55Dにも頑張って貰いたい
0895デフォルトの名無しさん
2007/04/21(土) 00:58:130896デフォルトの名無しさん
2007/04/21(土) 10:41:010897デフォルトの名無しさん
2007/04/21(土) 11:06:36CodeBlocksがまあまあ使える
0898デフォルトの名無しさん
2007/04/21(土) 13:31:18CodeCompletionがDに対応してくれないかなあ。
Code::Blocks本家で公開されてるソースの、src/plugins/codecompletion/ 内がそうなんですけど。
pluginSDKとwxとかいうのを入れればコンパイル出来るのかな? というかC++よくわからんし。
C++出来るエロイ人、どうかお願いします。
Code::Blocksの日本語化は、zipに入っている拡張子XRCのxmlファイルを編集すれば出来ます。
<label><help><tooltip>の箇所を書き換えてUTF8で保存し、zipに戻すだけ。
pluginの日本語化は、pluginDLL内のUnicode文字列をバイナリエディタなどで書き換える。
0899デフォルトの名無しさん
2007/04/21(土) 13:36:19http://ddbg.mainia.de/
0900デフォルトの名無しさん
2007/04/21(土) 14:10:45その日本語化したファイル( ゚д゚)クレ
0901デフォルトの名無しさん
2007/04/21(土) 17:20:050902デフォルトの名無しさん
2007/04/21(土) 19:25:57表の方で配布してるバージョンじゃなくて、
ttp://forums.codeblocks.org/index.php?board=20.0
で配布してる Nightly builds がDの設定を含んでいます。
Settings -> Compiler and debugger -> Global compiler Settings -> Selected compiler
で、Digtal Mars D Compiler を選択。
そのすぐ下のコンボボックスを切り換えると細かな設定できます。
ここが、ベースとなる設定。コンパイラのpathなど。
各プロジェクトごとでの設定は、
Project -> Properties -> Project's build options
の所で出来ます。
0903デフォルトの名無しさん
2007/04/21(土) 20:31:460904デフォルトの名無しさん
2007/04/22(日) 00:20:02落とせないんだけども俺だけ?
0905デフォルトの名無しさん
2007/04/22(日) 15:21:48while(p !is null) p = p(); みたいなことがしたいんだけど、
alias int function() func; ってするとコンパイラ死んじゃうし…
0906デフォルトの名無しさん
2007/04/22(日) 16:19:28ってやったらコンパイラ死んだwwwww
0907デフォルトの名無しさん
2007/04/22(日) 16:22:470908デフォルトの名無しさん
2007/04/22(日) 16:53:33ありがとう
そういえばそんなものがあるんでしたね。
プロパティもつけられて一石二鳥です
0909デフォルトの名無しさん
2007/04/22(日) 18:33:51alias でなく typedef を使う。
0910デフォルトの名無しさん
2007/04/22(日) 18:40:020911デフォルトの名無しさん
2007/04/22(日) 18:54:100912デフォルトの名無しさん
2007/04/22(日) 19:01:020913デフォルトの名無しさん
2007/04/22(日) 19:04:37バグではあるけど、放置されるかもしれんな。
0914デフォルトの名無しさん
2007/04/22(日) 19:13:35自分はSciteを使っているのですが、``でくくった内容を文字列として認識してくれないみたいであまり使い物になっていません。
0915デフォルトの名無しさん
2007/04/22(日) 19:45:28まともなインテリセンスの機能が付いたエディタがない以上
これで十分かなって。
0916デフォルトの名無しさん
2007/04/22(日) 20:35:02できるよ。
あまり意味無いけど。
int main(char[][] args){
auto chain = new Chain();
chain.push(&a, &b, &c);
chain.exec(1)(2)(3);
return 0;
}
void a(int n){
printf("%d: a_func\n", n);
}
void b(int n){
printf("%d: b_func\n", n);
}
void c(int n){
printf("%d: c_func\n", n);
}
続く
0917916
2007/04/22(日) 20:35:48class Chain{
public:
void push(F ...)(F fs){
foreach(f; fs){
funcs ~= f;
}
}
Self exec(int n){
pos = 0;
return exec_(n);
}
Self exec_(int n){
funcs[pos](n);
pos++;
return &exec_;
}
private:
typedef typeof(Self) delegate(int) Self;
void function(int)[] funcs;
int pos;
}
0918デフォルトの名無しさん
2007/04/22(日) 21:18:24typedef typeof(f) function() f;
typeofとすれば通るのか。ちょっとその辺よく分からんな…
0919デフォルトの名無しさん
2007/04/23(月) 00:19:13Richard Feynmanのもじり。
0920デフォルトの名無しさん
2007/04/23(月) 23:36:34eclipseでD書いてる人はいないの?
0921デフォルトの名無しさん
2007/04/23(月) 23:41:400922デフォルトの名無しさん
2007/04/24(火) 01:15:03IDEを作ろうとする(組み込もうとする)人を尊敬する。
0923デフォルトの名無しさん
2007/04/24(火) 18:22:060924デフォルトの名無しさん
2007/04/24(火) 18:26:070925デフォルトの名無しさん
2007/04/24(火) 18:28:12ドキュメントジェネレータ、IDEでサポートするのが筋。
0926デフォルトの名無しさん
2007/04/24(火) 18:39:13埋め込むのはコンパイラじゃないとできないんじゃないか?
いや、出来ないことはないが、in-out-bodyやinvariantと同じレベルの話だろう。
0927デフォルトの名無しさん
2007/04/24(火) 18:59:03そうか、ないのか。
あってもよさそうだと思ったんだが…
>>925
そんなプログラマの意思を読めるような賢いIDE見たことないんだが…
関数の戻り値型を明記していないのに、returnしている値が型において正当かどうかを判断するなんて無理だろ
0928デフォルトの名無しさん
2007/04/24(火) 19:04:530929デフォルトの名無しさん
2007/04/24(火) 19:16:45C++の例外指定がウンコだろうがJavaのが糞だろうが、それはどうでもいいんです。
0930デフォルトの名無しさん
2007/04/24(火) 19:18:060931デフォルトの名無しさん
2007/04/24(火) 19:24:10書きやすいよりバグりにくいことのが大切。
0932デフォルトの名無しさん
2007/04/24(火) 19:33:57throwの後ろにはクラスオブジェクトなら何でも書けるってのは問題ありじゃないかな。
タイポしたって意味さえ通ればエラーにならんわけでしょ?
0933デフォルトの名無しさん
2007/04/24(火) 23:09:33edlipse
0934デフォルトの名無しさん
2007/04/24(火) 23:17:270935デフォルトの名無しさん
2007/04/25(水) 02:44:32何をcatchすりゃいいんだよと思ったなぁ・・。
今はどっちが良いのか自分でもよく分からんや。
一概にどちらがいいとは断言できない、設計思想によるって感じかねぇ。
その辺の例外の設計ついて詳しく突っ込んだ書籍とかってあったっけ?
0936デフォルトの名無しさん
2007/04/25(水) 04:05:55どっちがいいかは俺もワカンネ
0937デフォルトの名無しさん
2007/04/25(水) 06:02:11DateTimeFormatでparseしようとしたらうまくいかなくて悩んでたら
throwされたのを拾ってなかったのが原因だった
だけどコンパイルエラーは出てなかったんだよね
throwsあるのに書いてないクラスが存在するってバグじゃね?
0938デフォルトの名無しさん
2007/04/25(水) 06:04:02EiffelTheLanguage
0939デフォルトの名無しさん
2007/04/25(水) 06:54:44--- a.d ---
import win32.core;
extern (Windows) void main() {
WNDCLASSEX wndcls;
}
----
>dmd a.d
略)\link.exe a,,,user32+kernel32/noi;
略)
a.obj(a)
Error 42: Symbol Undefined _D5win327winuser11WNDCLASSEXA6__initZ
--- errorlevel 1
って怒られます。このシンボルはどうやって解決すればいいんでしょか?
0940デフォルトの名無しさん
2007/04/25(水) 07:41:29.NETはthrowされるはずの例外がMSDNにちゃんと載ってないからなあ。最悪
0941デフォルトの名無しさん
2007/04/25(水) 07:43:42--------
EXETYPE NT
SUBSYSTEM WINDOWS
--------
0942デフォルトの名無しさん
2007/04/25(水) 14:46:02bud -gui a.d
か
dmd a.d win32\winuser.d
か
WinAPIのDモジュールを全部コンパイルしてライブラリにしといて
dmd a.d CompileZumiLibrary.lib
0943デフォルトの名無しさん
2007/04/25(水) 16:04:57そもそもthrowsで書かれるのはそのメソッド自身で発行する例外のみで、
そのメソッドが呼び出すメソッドによって発行される例外は
そのメソッドの定義だけ見ても分かんないんじゃ?
どんな例外がthrow送られてくるのか確定するには、結局コードを追わないことには…。
偶然意味が通ってしまうtypoなんてのは心配しだしたらきりがないと思うけど、
「仕様をコードに明示する」って考え方はDの作法にあうものだと思う。
import文で読み込むすべてのモジュールについて、コードをimport 式で読み込んで、
想定外の例外クラスをthrowしてたらassert(0)するようなunittestを書ければいいのかな。
0944デフォルトの名無しさん
2007/04/25(水) 16:26:520945デフォルトの名無しさん
2007/04/25(水) 16:27:47throws T となっているメソッドを呼び出す場合は、catchして握りつぶすか、
呼び出す側の関数に throws T とつけないといかんのではなかったか?
0946デフォルトの名無しさん
2007/04/25(水) 17:38:24いやまぁ賢明な判断だと思うけど。
やっぱJavaのthrowsによるチェック例外方式が、一番Dに合ってる気がするなぁ。
アレは上手に設計して利用すれば、バグ防止の強力なツールになるから。
メソッド名・引数・戻り値とかと同じように、
大事なメソッドの設計事項としてきちんと認識されれば……。
あ、Dの場合さらに契約も含まれるのか。
0947デフォルトの名無しさん
2007/04/25(水) 17:48:53IDEの支援があればいいんだけど
0948デフォルトの名無しさん
2007/04/25(水) 17:52:04そうなの?Java知らないから、
http://www.javaroad.jp/java_exception3.htm
> ※例外ハンドラが見つからない場合、Java実行システムはさらにメソッド呼び出し元(この場合はmainメソッド)へ、
> 例外ハンドラを捜しに行きます。最終的に例外ハンドラが見つからなかった場合はJavaのデフォルトの例外処理を実行します。
って書いてあったの読んで
一度投げられた例外は勝手に遡行していくものだと思ったんだけど。
945の言うとおりなら、筋が通ってる仕様だと思う。
ただ、それを強制するとなんでもcatchで握りつぶす悪癖につながるだろうから
Dに盛り込むには仕様を再考しなきゃならんだろうな。現実的な言語としては。
0949デフォルトの名無しさん
2007/04/25(水) 18:53:46って書式で関数型のaliasを宣言できるけど、
alias int(int) func;
っていう形では宣言できないんだね。
なんでここだけC式順序しか許されないんだろう。
alias int function(int) func;
ってやったら関数ポインタ型のaliasになった。
0950デフォルトの名無しさん
2007/04/25(水) 18:56:42処理するようにし向けることができることだと思う。
これは、Javaのように、どちらかと言えば例外を多く使うライブラリには有効だと思う。
たとえばCなら、定石的に、
if ((fp = fopen("file",rb)) == NULL) { ...
ってなコードを書くけど、
そういう処理をやれってことが、言語仕様から明確にサジェストできる。
0951デフォルトの名無しさん
2007/04/25(水) 19:07:57Javaだと、きっちり層分けして、別の層へ投げちゃうことになりそうな例外は
実行時例外でラッピングしてcatchを握りつぶされないようにするのが基本。
0952デフォルトの名無しさん
2007/04/25(水) 20:07:06DLLから、リンク為の.libファイルを作りたいときどうやるんでしょうか?
pragma(lib, "shlwapi.lib");
extern(Windows) int PathFileExistsW(wchar*);
void main(char[][] args) {
int b = PathFileExistsW("c:\\dmd\\bin\\dmd.exe"w.ptr);
printf("%.*s\n", (b ? "exist" : "not exist"));
}
ttp://www.digitalmars.com/download/freecompiler.html からimplibを入手して、
shlwapi.dllからshlwapi.lib生成してみたのですが、
implib /noi /system shlwapi.lib %windir%\system32\shlwapi.dll
リンクでエラーになってしまいます。
Error 42: Symbol Undefined _PathFileExistsW@4
dmdやdmcに付属の.libには、 _hoge@数字 形式のデータが入っているようなんですが
自分が生成した.libは _hoge 形式であって、一致しないようなんです。 lib -l shlwapi.lib
どうやったら _hoge@数字 形式の.lib作れるんでしょうか?
0953デフォルトの名無しさん
2007/04/25(水) 20:08:19catch して握りつぶすようなプログラムを検出して
コンパイルエラーには出来ませんか?
0954デフォルトの名無しさん
2007/04/25(水) 20:09:44不可能。なぜなら、「エラー処理として何もしない」という処理を意図的にできなくなるから。
0955デフォルトの名無しさん
2007/04/25(水) 20:12:37LoadLibraryじゃだめ?
0956デフォルトの名無しさん
2007/04/25(水) 20:16:16try
{
}
catch(IOException @nouse)
{
@@I really want to nothing exec this exception catch caluse. I,m understood how it means. yyyy/mm/dd xxxx xxxx.@@
}
0957デフォルトの名無しさん
2007/04/25(水) 20:18:19Cの/* fall through */みたいなもんやね
0958デフォルトの名無しさん
2007/04/25(水) 20:20:27D言語 Part13
http://pc11.2ch.net/test/read.cgi/tech/1177499924/
0959デフォルトの名無しさん
2007/04/25(水) 20:26:12Platform SDKの.libファイルをcoffimplibで変換してやればおk
俺がextern(Windows)の関数を使うときには、そうしてる。(DirectXとか)
0960デフォルトの名無しさん
2007/04/25(水) 20:30:370961デフォルトの名無しさん
2007/04/25(水) 20:31:27ありがとうございます。
DLLから直接生成する事しか頭になかったです。頭固いorz
0962デフォルトの名無しさん
2007/04/25(水) 20:39:02ソースコードをimport式で読み込んで
想定外の例外クラスをthrowしてるようだったら
assert(0)するようなunittestを書く、
というのはできなくもないような気がしないでもない。
0963デフォルトの名無しさん
2007/04/25(水) 20:50:010964デフォルトの名無しさん
2007/04/25(水) 21:47:520965デフォルトの名無しさん
2007/04/25(水) 21:48:58D言語ヲタがフリーのゲームを作ってる
0966デフォルトの名無しさん
2007/04/25(水) 22:07:23おつかれ。
次スレ:D言語 Part13
http://pc11.2ch.net/test/read.cgi/tech/1177499924/l50
と、
D言語に光あれ!
0967デフォルトの名無しさん
2007/04/25(水) 22:08:120968デフォルトの名無しさん
2007/04/25(水) 22:13:05template foo(){
int foo=3;
}
}
ってインスタンス化できないのかな。
fooとかfoo!()とかfoo!()!()とかfoo!().foo!()とか
いろいろやってもうまくいかなかった。
static ifと組み合わせて、テンプレートを返したり
関数を返したりとかやりたいんだけど。
0969デフォルトの名無しさん
2007/04/25(水) 22:16:58alias foo!() f1;
というように一段ずつやればできた。
しかしこれなら暗黙の同名メンバ参照を使わずに
やった方がマシだなあ……。
0970デフォルトの名無しさん
2007/04/25(水) 22:23:500972デフォルトの名無しさん
2007/04/26(木) 03:13:42// do nothing とかよく書くけど、
何らかの言語サポートが受けられんかなーとちょっとだけ思うのよねぇ。
まぁあったとしても効果は無いんだろーけどなー。
……そーいやdefault:無しのswitch文が
何ゆえコンパイル時じゃなく実行時エラーなのか、
いまだに理由が分からん。
0973デフォルトの名無しさん
2007/04/26(木) 04:09:56defaultへ逝くケースがあるかないかは実行時にしか判らないけど
プログラマの意図としてはdefaultへ逝くことがありえないと判断して
書いてるような場合は仕方無いのではないかと
コメント書かないと警告出すとかは賛成です
0974デフォルトの名無しさん
2007/04/26(木) 07:27:140975デフォルトの名無しさん
2007/04/26(木) 07:51:380976デフォルトの名無しさん
2007/04/26(木) 10:04:23いっそdoNothing()でw
0977デフォルトの名無しさん
2007/04/26(木) 10:52:02コメントでdoNothing();するってことは
defaultをdefaultじゃなくするってことに過ぎないだろ
0978デフォルトの名無しさん
2007/04/26(木) 11:05:32エラーとして検知されるようになってるのがD言語だから、
catchするなりdefaultを書くなりするってことそのものが
「明示」にあたるんじゃないかな。
だからdo_nothingは、すくなくとも例外とswitchについては用が足りてると思う。
べつにdefaultを省略しちゃいかんわけじゃない。そこに到達しないなら。
例外も補足しなきゃならんわけじゃなくて、処理できないものは
catchせずにスルーしちゃっていいわけだし。
(もちろん停止しちゃいけないとかいうときには停止しない範囲の
どこかで処理する必要はあるわけだけど)
にもかかわらず闇雲なdefault:とか条件が広すぎるcatchを仕掛けるのは、
「エラー処理はしなければならない」っていう強迫観念からくるごまかしな
わけで、それはdo_nothingを強制したところで今度は「do_nothingと書きつつも
do_nothingじゃまずかった」という状況を生むだけで不毛だと思う。
具体的なブツを明示するのと違って、「具体的に問題を認識してなくとも
同様に書ける」ような踏み絵はあんまり意味ないんじゃない?
単にdefault抜けをコンパイル時に指摘してほしい場合は-wオプションで
警告を出せばいいと思う。
http://www.kmonos.net/alang/d/warnings.html
http://www.digitalmars.com/d/warnings.html
そこ読んでて気づいたけど、
> warning - array 'length' hides other 'length' name in outer scope
ってあるけど、これ警告からエラーに昇格したんだよね。
0979デフォルトの名無しさん
2007/04/26(木) 14:12:07switchに入った途端に問答無用でErrorじゃなかったっけ?
実際の値に対応するcaseが存在しようがしまいが。
0980デフォルトの名無しさん
2007/04/26(木) 15:01:48NO
http://www.kmonos.net/alang/d/statement.html#SwitchStatement
> 更にdefault文もなかった場合は、 SwitchError例外が送出されます。
0981デフォルトの名無しさん
2007/04/26(木) 15:58:000982デフォルトの名無しさん
2007/04/26(木) 16:03:25最適化が悪くなるじゃん。
0983デフォルトの名無しさん
2007/04/26(木) 16:31:580984デフォルトの名無しさん
2007/04/26(木) 19:04:14その上default必要って言われたら
アホかと
0985デフォルトの名無しさん
2007/04/26(木) 19:25:150986デフォルトの名無しさん
2007/04/26(木) 20:08:23全部尽くしてるなら書かなければいいんじゃね
0987デフォルトの名無しさん
2007/04/26(木) 20:12:000988デフォルトの名無しさん
2007/04/26(木) 21:01:04書かなくていいんだけどその後がな
0989デフォルトの名無しさん
2007/04/26(木) 21:54:34にもかかわらずcaseで補足できない→プログラマの想定外だと判断して例外
空のdefaultがある→caseで引っかからない場合は、何もしないというプログラマの意思表示
それなりに筋は通ってると思うが。
0990デフォルトの名無しさん
2007/04/26(木) 21:56:44それの筋が通っていないと言っている人間はいまのところいないのだ。
0991デフォルトの名無しさん
2007/04/26(木) 22:13:24意図的に例外を握りつぶすとか、空のdefaultとかは、それ自体は正当なコードなのだから、
そのために余分な手間をかけたくないなあ、と思う。
コメントとかdoNothing();とかを必須にしたところで、
そうしたい奴は何も考えずに挿入するだけだから、かえってよくないかもしれない。
(検出機構をだますことになる)
0992デフォルトの名無しさん
2007/04/27(金) 00:38:310993デフォルトの名無しさん
2007/04/27(金) 10:22:35次スレ:D言語 Part13
http://pc11.2ch.net/test/read.cgi/tech/1177499924/l50
0994デフォルトの名無しさん
2007/04/27(金) 10:23:22http://pc11.2ch.net/test/read.cgi/tech/1177499924/l50
0995デフォルトの名無しさん
2007/04/27(金) 10:23:53http://pc11.2ch.net/test/read.cgi/tech/1177499924/l50
0996デフォルトの名無しさん
2007/04/27(金) 10:24:24http://pc11.2ch.net/test/read.cgi/tech/1177499924/l50
0997デフォルトの名無しさん
2007/04/27(金) 10:24:54http://pc11.2ch.net/test/read.cgi/tech/1177499924/l50
0998デフォルトの名無しさん
2007/04/27(金) 10:30:47http://pc11.2ch.net/test/read.cgi/tech/1177499924/l50
0999デフォルトの名無しさん
2007/04/27(金) 10:31:19http://pc11.2ch.net/test/read.cgi/tech/1177499924/l50
1000デフォルトの名無しさん
2007/04/27(金) 10:31:50次スレ:D言語 Part13
http://pc11.2ch.net/test/read.cgi/tech/1177499924/l50
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。