[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/17 05:50 / Filesize : 212 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

D言語 Part16



1 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 23:00:35 ]
プログラミング言語 D (D Programming Language) について語るスレッドです。
過去スレは >>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)
ttp://tinyurl.com/3da5oa (C/C++に疲れた人のD言語)
ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語)
ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか)
ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座)

384 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:15:44 ]
struct A {}

A a0;
const A a1;
a0= a1; //Error: cannot implicitly convert expression (a1) of type const(A) to A

をるたん・・・


385 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:40:31 ]
>>384
それは今まで出来たのがおかしい気がする。

386 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:49:24 ]
>>385
>>384じゃないけど、構造体の代入はビットコピーなんだからできないとおかしいだろう。

387 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:51:46 ]
>>386
例えば、Aがint*型のメンバを持ってたとしたら、
const(int)*からint*への暗黙の型変換が起きてしまうと思うのだけど。

388 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 03:00:16 ]
>>387
そういや、そうか。すんません。

389 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 08:53:49 ]
>>387
const(int*)にならないの??
おれがわかってないのか??


390 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 09:19:51 ]
>>384

Replace:

> const(C) c;
> c = new C(1); // error

with:

const(C) c = new C(1);

だってさ

ttp://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D.announce&artnum=10964

391 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 10:01:38 ]
>>390
ん? それ>>383のだよね。

392 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 12:27:38 ]
>>387
ポインタを含む場合だけエラーってのでいいと思うんだけどなあ。



393 名前:390 mailto:sage [2008/01/02(水) 12:31:13 ]
>>391
そそ、ごめん

394 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 16:11:30 ]
>>377
これなおらなきゃまともに窓作れないよ・゚・(つД`)・゚・

395 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 17:28:04 ]
>>392
そんな例外はかえって必要ないだろう。

396 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:25:48 ]
budで-Xphobosつけないとphobosのソースもコンパイルされるという事実に気づいた
自動で付いてるもんだと思ってたのに・・・ひどい!

397 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 03:37:47 ]
char[] hoge = new char[100];

char[] hoge;
hoge.length = 100;
ってなんか違うことってある?

398 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 03:54:26 ]
意味的には違わないはず。生成されるコードは知らないけど。

399 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 23:57:30 ]
構造体をcast(const)できないんだけど、どうすればいいんだ。

400 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 01:45:20 ]
>>399
コードplz あとそれどんなときに必要?

401 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 01:52:26 ]
struct S {int i;}

void main() {
auto a = [S(0), S(1)];
auto b = [cast(const)S(0), S(1)]; // Error: no property 'opCall' for type 'const(S)'
}

const(S)[] 型の配列リテラルが欲しいんだ。

402 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 02:12:20 ]
>>401
これじゃダメ?
import std.stdio;
struct S{int i;}
void main(){
 const x = [S(0), S(1)];
 writefln(typeid(typeof(x))); // (const(const(main.S)[2])
}
配列リテラル周りはいつもバグに悩まされるから使わない方が
トラブルに遭わずに済んでいいかと



403 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 02:25:51 ]
const(S) a = S(0);
const(S) b = cast(const(S))S(0);

確かに、暗黙に変換できるのに、明示的にキャストできないのは気持ち悪いな。

404 名前:402 mailto:sage [2008/01/04(金) 02:26:57 ]
どうもconst(S)とS(0)を同時に実現できないみたいなので下のzのようにするしかないんじゃない?
import std.stdio;
struct S{int i;}
void main(){
 const x = [S(0), S(1)];
 writefln(typeid(typeof(x))); // (const(const(main.S)[2])

 auto y = [S(0), S(1)];
 writefln(typeid(typeof(y))); // main.S[2]

 const s = S(0);
 auto z = [s, S(1)];
 writefln(typeid(typeof(z))); // const(main.S)[2]
}

405 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 02:33:45 ]
これでおk

auto a = [delegate const(S)(){return S(1);}(), S(2)];

406 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 06:02:12 ]
似たようなやり方を前にも見たような気がする

407 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 21:56:14 ]
phobosに16進文字列を整数に変換する関数ないの?

408 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 22:37:09 ]
と思ったけど、CTFEできないといけないから、いらないや

409 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:58:00 ]
もしかして引数なしの関数って、() なしで名前だけで呼び出せるのか

410 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:47:20 ]
yes. プロパティっぽく扱えるようになってる。

411 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:48:22 ]
>>408
それくらいの関数って作れなかったっけ?

412 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:23:48 ]
yes.
プロパティのための構文糖。



413 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:24:57 ]
リロし忘れてたごめんorz
答え方まで似てるってのが笑える。

414 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:31:14 ]
>>411
CTFEできないとダメだから自前でこしらえるしかない、って言いたかったのさ

415 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:36:56 ]
>>414
あーなるほど。さんくすこ

416 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 11:30:03 ]
>>410,412
なるほど、Ruby チックでいいね

417 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 20:19:50 ]
それってプロパティじゃない関数までgetterとして振舞うってことだよな。
LL好きにはいいんだろうけど、ちょっとやだな。
getter/setter相当がオーバーロードされているときと、
getterのみはローカルキーワードで対応ってならんのかな。

418 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 21:52:02 ]
引数がない関数にわざわざ()をつける必要がないってのは自然な感じがするんだけどなあ。

419 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 22:01:44 ]
まあ副作用が無ければ自然に思える。

420 名前:デフォルトの名無しさん [2008/01/07(月) 22:25:16 ]
その情報を取り出すことで何かが変化するのなら、それを使用するときに変化すると言うことが明確でなければならない。
つまり関数には後ろに「( )」が必要。


421 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 22:47:17 ]
>>417-419
Delphiも、引数なし関数は省略できたな。

>>420
上の行としたの行がつながらん。
()があれば、必ず副作用なるわけではないでしょう?

副作用があるかどうかは、メソッド名とドキュメントで明示すべき。

422 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 22:49:44 ]
命名をちゃんとしとけばそれほど違和感ないと思う。

process.kill
thread.start
window.close
stream.flush
something.toString



423 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 22:55:44 ]
基本的に、名詞はプロパティ、動詞はメソッドというのが一般的じゃないかな。

424 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 03:06:26 ]
そういや、Rubyも括弧いらないんだよな。

425 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 07:19:29 ]
Ruby で慣れてるから副作用があろうがなかろうが括弧無しで違和感ないわ

426 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 10:57:58 ]
>>417
個人的には変数がクラス外部からはconstに見えるアクセス制御がほしい。
class Foo {
int hoge_;
int hoge() { return hoge_; }
}
とか書くのも冗長、最適化されるか分からないのが嫌、みたいな。

っつかそういう制御っていまできましたっけ?

427 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 12:32:09 ]
>>426 constメンバ関数
class Bar {}
class Foo {
int hoge_;
const int hoge() { return hoge_; }
Bar bar_;
this() { bar_ = new Bar; }
const const(Bar) bar() { return bar_; }
}

428 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:37:46 ]
そういうことじゃなかろう。

429 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:44:09 ]
readonlyにするってこと?

430 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:46:40 ]
話ぶったきるが、連想配列では

char[][char[]] m;
m["foo"] ~= "bar";

と m["foo"] が lvalue になるんだけど、自分で作ったクラスが opIindex で配列を返すと
当然のことながら lvalue にならない。どうにか関数で配列の参照を返すことってできんだろうか?


431 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:08:07 ]
opIndexAssign?

~= みたいな複合演算子は使えないけど。

432 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:42:51 ]
それか、プロキシオブジェクトを返すか、だね。



433 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:07:09 ]
phobosにmap, filter, reduceとか配列操作関数が欲しいよう

434 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:15:26 ]
>>431
代入(=)じゃなくて連結(~=)したいんだ。
いちいちプロキシオブジェクト作るのは面倒だし、困ったものだ。

あと、配列とかにも演算があるんだから opCmp とか呼べりゃ良いのに・・・
ソート用に比較するときに == と < (または > ) の2回比較しなければいけないから困る。

細かいところで融通きかんよなぁ。

435 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:19:52 ]
>433
Lisp屋さんか?それともPython屋さんか?

436 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:37:02 ]
>>434
インデクサやスライサの複合代入がオーバーロードしたいって要望はずっと前からあるが、
実現される兆しはないな。プロキシオブジェクト返すしかなさそう。

TypeInfo使えば、プリミティブ型を含めて任意の型の比較が汎用的に出来るよ。

int[] x = [1, 2, 3], y = [1, 2];
writeln(typeid(int[]).compare(&x, &y));

437 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 14:08:13 ]
java7で言語仕様に盛り込まれるというプロパティ仕様がかなり羨ましくてしょうがない。
お決まりの実装は自動生成してくれたり……をるたんも影響受けてくれないかなぁ。

438 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 17:02:35 ]
>>437
詳細ちぼん

439 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:34:02 ]
>>438
journal.mycom.co.jp/articles/2007/05/16/java7/index.html

あ、でもこれだと「フィールドとプロパティで名前がかぶるからフィールドに_つけなきゃ」
とかの悩みが解決できないなぁ……いや、内部からもプロパティでアクセスすりゃいいかな。

440 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 19:41:32 ]
>>439
> 内部からもプロパティでアクセスすりゃいいかな。
継承に影響が出るから、別の意図が無ければそうすべきだよ。

441 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 20:09:00 ]
>>224-226の話だが、eBook版が現地時間の1/7からゲット可能になってるらしいぞ。
www.dsource.org/projects/tango/wiki/LearnToTangoWithD
なんてのもできてた。
人柱レポ頼む。

442 名前:434 mailto:sage [2008/01/09(水) 22:58:21 ]
>>436
おおお、そんな方法があったのか。ありがとう。
というか、インスタンスが同じかどうか調べる(x is y 式と同じ)ものだと思ってたよ。
opCmp は呼べないのにどういう仕組みになってんだろ。。



443 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 23:26:05 ]
>>442
std.typeinfo以下に全部ソースあるから読んどくといいよ。

444 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 07:07:30 ]
>>439
なるほど。 ありがとう
これはいい文法砂糖

445 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 03:01:09 ]
>>353
アイ ウンコ ナウ
と読んでるでのは俺だけじゃないはず

446 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 09:48:44 ]
お前だけだろw

447 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 05:07:50 ]
ウンキングナウ!

448 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 16:06:46 ]
動きないのかなあ

449 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:04:37 ]
D forum からネタ
www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=64888

450 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:40:17 ]
WPFでウィンドウを表示するのには成功したんだが、
イベントの受け取りをどうするか…

451 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:27:53 ]
std.threadにsleepがないんだが、どっか別の場所にある?

452 名前:デフォルトの名無しさん [2008/01/14(月) 19:42:43 ]
$ find std -name '*.d' -exec grep -H 'sleep' \{\} \;
std/c/time.d:void sleep(time_t);
std/c/time.d:void usleep(uint);
std/c/time.d:void msleep(uint);




453 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:51:30 ]
d
今更だがphobos手抜きすぎる気がしてきた

454 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:50:08 ]
言語仕様は素晴らしいが開発環境とライブラリが貧弱すぎて使い物にならないのがD。

455 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:52:41 ]
言語使用はC++なみに複雑で全然素晴らしくない。
C++の焼き直しに過ぎない。

456 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:55:45 ]
言語仕様が素晴らしいと思われるようにころころ言語仕様を変更してるから、
開発環境とライブラリが成熟しなくて、結局使い物にならないのがD。

457 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:00:35 ]
C++のように現実的な限界を認めてさっさとライブラリや文法を
固めてしまった方がはるかに現実的なのに。

458 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:02:04 ]
Dは実用言語を目指した実験言語です

459 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:04:47 ]
こんなところでケチ付けても、をるたんは日本語の掲示板なんて見ないよ。

460 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:28:21 ]
>>457
それはPython


461 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:34:55 ]
来年で10年だし そろそろ固まってもいいころだと思うんだが

462 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:52:40 ]
Dの初心者向け解説を一通り見た感想なんだけど。

C++のキモ過ぎに絶えられない人。
英語読めない人。
せいぜい趣味の範囲。
windowsが主でパソコン(PC)しか見えてない人。
それ以外mac, linux, unixにあんまり関心ない人。

C++に抵抗があって、java, C#以外を考えるなら、
objective-cでいいかなと思うけど、英語勉強しないとねw

Dなんて、いまだに実用(プロジェクト・個人でも)で使うのは怖くてできないし、
おぼえようにも仕様が複雑すぎ・リテラルが多すぎで、結局C++とかわんないw

ということで、C++と同じくwindows向けのオナニー言語ってことだと思った。
この辺が一向に流行らない理由じゃないかな。
ちなみに、dmcは結構好きだけど。



463 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:00:30 ]
D は Windows 以外でも使えるが・・・。

464 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:05:00 ]
ニュースグループ読んでる感じだと、非Windows環境での話題のほうが多いぞ

465 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:08:46 ]
つか言語がwindows向けってどういうことだ

466 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:16:04 ]
windows(とlinux)がターゲットだからまずwinからサポート・実装される。次が非windows。
でもパソコンがターゲットならvmのjavaかc#でいいよ。

次世代目指すとかデスクトップ(win, gnome)とかターゲットかと思えば、
その割には、dはguiとか標準で持ってないし、一体何をしたいんだが理解に苦しむ。
dを追いかけるよりも他の言語やunixを追いかけたほうが日本人にはいいと思った。
ハードならcや分野専用のカスタマイズ言語(cgとか)があるし。
一応、嘆き。

467 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:16:36 ]
>>462
日本語でおk

468 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:18:13 ]
デーモンとか書くの楽になるならDもいいんだけど

469 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:19:07 ]
>467
おまえ馬鹿じゃね?

>>462の言ってることはめちゃくちゃ明解

470 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:20:05 ]
>>465
PCが主体で、携帯とかPDAとかじゃなくて、デスクトップ向けってことです。
ほぼwindowsの牙城というか。

C++にGCが標準で搭載されれば(bohem gcでも)、Dの存在価値は薄くなるかなってw

471 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:22:50 ]
正式版が出てから急にシェアが増えたのはどう説明するんだろ>>257
対してC++のシェアはDの伸び以上に減ってるんだよな
言語が増えた今、C++は用途が限定されたオナニー言語になりつつあるという事だ

472 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:33:07 ]
C++ はプログラマのオナニー向けじゃなく、コミュニティのオナニー向けだろ。
俺は Boost のイカれ具合とそれを崇拝する信者どもに嫌気が指した。




473 名前:デフォルトの名無しさん [2008/01/14(月) 23:35:06 ]
なんだ自演がはじまったのか

474 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:36:16 ]
Dの目的のなさも似たようなもんじゃないか?
どうせC++についていけないでDに逃げてきたんだろうし。

475 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:37:45 ]
0xスレでやれ

476 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:38:00 ]
C++は標準化委員会があるからまだいいほうだろ。

477 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:43:39 ]
>>476
Boost の lambda とか言われたままに採用せずに、あんなもん言語仕様のひとつに組み込めよ、と思う。
なんでもかんでも template で generic programming って間違った進化だろ。
で、こういうこと言うとパラダイムシフトできないアホグラマがどうのとか。
スレ違いだからこのへんにするが。

478 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:45:23 ]
C++についていけなかった香具師らはRubyに逃げた

479 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:47:58 ]
>>477
まあ今の言語の群雄割拠は地球の歴史でいうと先カンブリア紀のようなもんだからなぁ


480 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:04:41 ]
パーサーが実質世界に一つしかなくてしかもオープンソースというのは
C++ からしたら天国じゃないか

481 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:23:46 ]
同じ事が近いコーディングコストで達成できるのであれば、言語仕様は小さい程いい。
何でもかんでも言語仕様に取り込みゃいいってもんじゃない。

482 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:28:54 ]
>>481
構文や意味に誤りがあった場合にまともなエラー表示ができていない。
達成できてるとは言い難い。



483 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:30:20 ]
コンパイラが実装しなけりゃ絵に描いた餅。
export の二の轍を踏むだけ。

484 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:32:13 ]
Dの設計・言語使用に携わっている人たちが、そもそもC++についていけなかった件について。






[ 続きを読む ] / [ 携帯版 ]

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

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