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


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

D言語 Part15



1 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 20:16:30 ]
プログラミング言語 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://www.sun-inet.or.jp/~yaneurao/dlang/
ttp://wisdom.sakura.ne.jp/programming/d/

652 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 23:21:18 ]
void main(){
A!(int) a;
a.f();
}

struct A(T){
T t;

A!(A!(int)) f(){
A!(A!(int)) a;
return a;
}
}
これってやっちゃいけないことなのかな。
エラーになる。
Aをコンテナとして、リストのリストと言う具合に、
入れ子にするのは良くあることだと思うのだけど。

653 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 23:46:58 ]
>>652
A!(A!(int)) をtypedefしたりなんやらしてたらDMDが無限ループに入っちまった。
怖い怖い

654 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 00:05:24 ]
>>652
普通に無限ループしないか?
テンプレートをインスタンス化すると、その内部のテンプレートがインスタンス化され、
さらにその内部のテンプレートがインスタンス化され、、、




655 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 00:09:45 ]
>>647
2.003と2.007の動作は同じよう。変化なかったよ。
1.023と2.007の動作はぜんぜん違った・・・

要素3つの配列をソートするだけの処理で・・・
1.023は、配列初期化時にopCmpを20回、ソート時に3回呼び出してる。
2.007は、配列初期化時にopCmpを3回、ソート時には呼び出しなし。

2.007は降順で1.023は昇順という大きな違いが←既知事象?


656 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 01:11:38 ]
gdcって1.020までしかないの?
だめじゃん

657 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 01:35:23 ]
あった・・・
なんで最新のやつをでかでかと表示したりしないんだろ

658 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 01:39:02 ]
>>654
最終的にはintで止まるはずだから、無限ループはしなさそうだけど
C++でやってみたら大丈夫だったし

659 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 02:06:12 ]
え、Dって末尾再帰最適化してんの

660 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 02:46:11 ]
なぜ突然「末尾再帰最適化」?
関係ないだろ



661 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 03:53:51 ]
そういえばDって無限リスト書けんのかな

662 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 04:03:57 ]
それっぽいものなら何とでもかけると思うが。

663 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 12:07:40 ]
クロージャが来た記念ってことで、遅延リストを作って遊んでた俺。
でも、lines :: [char] -> [[char]]が書けなくてショボーン。
getContentsとか、zipWith使ってフィボナッチとかはできたお。

664 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 12:39:25 ]
>>658
考えてみてもintで止まるということがよく分からんかった。
A!(int)はA!(A!(int))型戻り値の関数を持ち、
そのA!(A!(int))型はA!(A!(A!(int))))型戻り値の関数を持ち、…
となるように思える。(intから始まって、止まらない)

A!(int)の実体化中にA!(A!(int))を実体化しようとすると、
無限リストよろしく永遠に型の実体化が終了しないんじゃなかろうか。

で、A!(A!(int))の実体化のタイミングをA!(int)の定義後にしようと思って
struct A(T){
T t;
A!(TA) f(TA=A!(T))(){
A!(TA) a;
return a;
}
}
としてみたけど、それでもコンパイラ様は再帰展開だとおっしゃる。

で、小手先の変更として f(TA=A!(T))() を f(TA=typeof(this)) と変えてみたら
dmdがsemantic3でオチタ\(^o^)/

665 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 13:19:30 ]
くそー2.007おもしろそうなんだが、前のプログラムが動かん・・・
今まで追い続けたんだけど、今回は2.006にもどすよ。。。
>>663
面白そうな雰囲気
まったくわからんおいらに説明おねがいします

666 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 13:41:58 ]
>>664
よく見ようよ。
A!(A!(T))だと確かにとまらないけど、上のコードはA!(A!(int))。
どう見ても有限の展開しかしない。
単に動かないのはdmdのバグでしょ。

667 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 13:46:10 ]
class List(T) {
static List!(List!(T)) listOfList() {
return null;
}
}

alias List!(int) t;

668 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 13:59:06 ]
>>666
なるほど、A!(A!(int)).fの戻り値型はA!(A!(int))そのものになるのね。

669 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 15:35:01 ]
単純にA!(A!(int))を展開しようとしたらまたA!(A!(int))が展開されて・・・という話ではないの?

670 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 15:55:09 ]
同じテンプレート引数では一回しか実体化されないはず。



671 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 16:11:39 ]
あーそうだった
俺ショボスwww

672 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 16:47:13 ]
実装しだいでは、A!(A!(T))でも大丈夫だと思う。
なんせ、C++ではこれが正常に動くのだから。
C++でできることはDでもできてほしい。

using namespace std;

template<class T> struct A{
T t;

A<A<T>> f(){
A<A<T>> a;
a.t.t = 2;
return a;
}
};

int main(){
A<int> a;
A<A<int>> b = a.f();
cout << b.t.t << endl;
return 0;
}


673 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 18:04:20 ]
久々にスレの勢いを見てみたら、
この板ではC/C++, Javaについで3番手だということに気づいた。
PerlやJavaScriptやPHPはここではない場所でやってそうだが、
それでもずいぶん上に来たものだ。

674 名前:663 mailto:sage [2007/11/05(月) 18:24:56 ]
>>665
Haskellに標準搭載されてる遅延リストを、Dでどれだけ実現できるか、という試み。
実行コストが高いから実用性は無くて、お遊びでしかないけど。
ttp://www9.uploader.jp/dl/sukiyaki/sukiyaki_uljp00005.zip.html
ここに上げたから、詳しくはこれを見てみて。

linesとgetContentsとzipWithは、Haskellにある関数。
linesが書けないのは>>652がエラーになるせい。

675 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 18:31:51 ]
>>673
ウォルたんから新ネタがどんどん届くからな
間違いなく勢いはある

676 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 18:47:32 ]
クロージャが入ってからの勢いがものすごいだけで、普段はそんなにすごくないんじゃないかな。

677 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 19:01:11 ]
C++インターフェースのときもすごかったよね。

>>773
をををっありがとうございます
拝見します

678 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 19:04:44 ]
replace( D言語Part15[677], `>>773`, `>>674`);
//ごめんなさい

679 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 19:21:49 ]
ぬるぽ

680 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 20:04:12 ]
俺はマクロくるまで冬眠



681 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:04:15 ]
そう言って冬眠したのはもう三人くらいいるようなw

682 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:10:47 ]
俺の理解度は置いといて!他の人のコード読むと楽しいな!!
なんかね、久しぶりに心から「へぇ〜」っていっちゃった。

やっぱ、ネットはこうでないと。




そうそう、俺タートルとかやってた奴ね。


683 名前:682 mailto:sage [2007/11/05(月) 21:13:27 ]
混乱避けるつもりが紛らわしく。。。
俺-> >>682だけね。

684 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:22:04 ]
>>682はもうちょっと落ち着いてもいいと思う
やけに楽しそうだw

685 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:44:05 ]
getenv("CONTENT-LENGTH").toInt()
とかはちょっとニヤリとしてしまう

686 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:51:41 ]
俺は予想外にもクロージャ来たから冬眠からさめちまった

687 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 22:23:48 ]
CGIっつーかAjaxっつーかweb開発用のフレームワークってありますか?


688 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 22:32:07 ]
なんか、あったような気もするけど、古いかもなあ。

689 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:01:15 ]
自己を動的に派生クラスに書き換えるモデルを考えて、
以下のようなコードを組んでみたのですが、失敗しました。
そもそも自己を動的に派生クラスに書き直せるのかちょっと疑問になったのですが、
こういうことは可能なのでしょうか。

class Hoge {
this() {}
void rewrite() {
this = new Huga;
}
}

class Huga : Hoge {}

void main(){
auto a = new Hoge;
a.rewrite;
writefln(a);  // -> Hoge
}

690 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:02:37 ]
>>687
sakuraiさんがずっと前に作ってなかったっけ



691 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:12:28 ]
>>689
変数aのアドレスなり参照なりがわからないと無理でしょ。
メモリのインスタンスが存在する部分を書き換えるわけにはいかないから、
変数aが指しているものを書き換えるしかない。

692 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:17:57 ]
仮想メソッドを直接書きかえ・・・いやなんでもないです

693 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:18:58 ]
できてしまった
import std.stdio;
class A{
void change(ref A a){
a = new B;
}
}
class B : A {}
void main(){
auto x = new A;
writefln(x); // a.A
x.change(x); // a.B
writefln(x);
}


694 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:21:26 ]
コメント書くところ間違えた
あとインデント見やすく
import std.stdio;
class A{
 void change(ref A a){
  a = new B;
 }
}
class B : A {}
void main(){
 auto x = new A;
 writefln(x); // a.A
 x.change(x);
 writefln(x); // a.B
}

695 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:26:15 ]
this ってメソッド呼ばれる時にインスタンスのポインタを値渡しされたただの隠しパラメータだからな。
だから、this をいくら書き換えても呼び出し元の変数(ポインタの値)は変わらないまま。
this が元から lvalue にならなきゃ混乱しないのに。

696 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:31:15 ]
>>692
求めているものは仮想メソッドの動的書き換えで、
かつオーバーロードできればいいなあという感じ(なのでデリゲート不可)で、
それが理想なんですが、さてどうしたものかと。

>>691 >695
なるほど。。少し分かってきました。
この辺を突破できるトリックをぼちぼち探してみます。

697 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 00:10:16 ]
>>694
ひとまずこれベースで行ってみます。
ありがとうございました。

698 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 01:03:34 ]
っステートパターン
って言ってみる

699 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 01:37:40 ]
D言語を使うからにはもっとトリッキーな手法をとるべきではなかろうか。

700 名前:デフォルトの名無しさん [2007/11/06(火) 01:57:34 ]
D言語は糞



701 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 02:31:15 ]
>>697
Has-a使ってやってみるのは?
ttp://www9.uploader.jp/dl/sukiyaki/sukiyaki_uljp00006.zip.html

なんでこの線路 .d がアップロードできんのん?

702 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 03:39:17 ]
なんか8スレ目ぶりくらいにアンチを見た。

703 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 04:43:04 ]
dupと[]って書き方以外になんか違うところあるの?

704 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 08:01:51 ]
>>703
dupは複製される。[]はされない。

int[] x = [1,2,3];
int[] y = x[];
y[0]=999;
writefln(x); // 999 2 3 (y=x.dupなら1 2 3)

705 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 08:35:14 ]
クロージャがくると、coroutineがもうすぐできる
という夢をみた

706 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 13:49:41 ]
>>703
[]は配列全体のスライス。
dupはミュータブルな複製。
したがって、型が違う場合がある。

static assert(is(typeof("foo") == invariant(char)[3]));
static assert(is(typeof("foo"[]) == invariant(char)[]));
static assert(is(typeof("foo".dup) == char[]));

707 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 14:57:39 ]
ここまで試してみた結果のまとめ

・自己インスタンス書き換え
 外部の自身を指すポインタのアドレスを渡す必要がある=複数あった場合は厄介
 newでコンストラクタを呼び出すと厄介

・delegateスイッチング+可変データアダプタ
 オーバーロードできない
 プロパティ風呼び出しができない

・Has-a
 オーバーヘッドはあるが、無視できることが多いかも
 ExchangerとInterfaceで2回定義を書くのがやや冗長

・分岐
 オーバーヘッドが大きい

・Factory
 動的な変更が内部的には行えない
 自身を指すポインタが複数あると厄介

自分の目的だとHas-aかデリゲートスイッチングの2択になりそうですが、
もう少し煮詰めてみて面白そうなら報告いたします。

708 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 15:37:02 ]
アップローダのアップ形式は自分ではいじれないっぽい〜。
レンタルなんですけど、ちょっと不便だなぁ。

>>684
お察しのとおり、たのしくて!
えぇーっと、多少自重します〜。

709 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 15:39:36 ]
d monooki とかいうDのソースコードアップロードできる場所が
あったけど、いま使えるっけ?

710 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 18:12:19 ]
>>707
別のインスタンスにすり替えるんじゃなくて、インスタンス自体を書き換えてみた

import std.gc, std.stdio;

class A{
void change(){ // A to B
if(B.sizeof > capacity(cast(void*)this)){
if(extend(cast(void*)this, B.sizeof-A.sizeof, B.sizeof-A.sizeof)){
throw new Exception("std.gc.extend failed");
}
}
size_t ptrsize = (void*).sizeof;
with(B.classinfo){
(cast(byte*)this)[0..init.length]
= init[0..init.length];
}
}
}
class B:A{
void change(){ // B to A
...省略...
}
}

void main(){
A a = new A;
a.change();
writefln(a); //B
a.change();
writefln(a); //A
}



711 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 19:31:30 ]
きんもー☆

712 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 19:43:00 ]
強烈過ぎて吹いたw
ちょっと使える場面が限定されそうなので、しっかりメモしてそれにとどめておきます

しかしgcがありながらこれができてしまうDの変態さには感心する

713 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 19:44:55 ]
gcがあるからこそできるんじゃね?

714 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 23:46:58 ]
version条件で、#ifndefとか#if !defined()とか#if defined() && defined() #elseに相当することってできましたっけ?
なんとなくstatic ifに書き換えてますが、無駄を感じるもので。

715 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 23:51:29 ]
どのへんが無駄?

716 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 23:56:53 ]
static if以外にはversionとdebugくらいしかないと思う
他にあったっけ?

717 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 00:06:16 ]
version(...){...}else{...}はできたような希ガス

718 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 00:47:35 ]
#if defined(FOO) && !defined(BAR)
 ...
#else
 ...
#endif

これが書きづらい。
static ifは定義済みでないと扱えないので、これをすっきり表現するには、
versionで定義されてるかどうかを真偽値とする定数を作って、……とやってるんだが、
このへんがどうにかならんもんかなあと。

719 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 00:59:10 ]
#define FOO
に変わるものがなあああいい

720 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 01:07:02 ]
コマンドラインで指定するのをあきらめて、const使う案しか思い浮かばない

const FOO = true;

static if(FOO){
const HOGE = true;
}
else{
const HOGE = false;
}




721 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 01:07:08 ]
>>719
version=FOO;

722 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 01:44:30 ]
>>548について本家で聞いてみたら、
「バグだとは認識されてるけど、『直す手間の割に実がない』とウォルターが言ってた」
とのこと。
まあ回避できるし特にいいかなと。

723 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 02:07:56 ]
>>718
mixin宣言で「hoge1&&!hoge2ならversion=hoge3」とかやろうとしてみたけど
mixin宣言で生成したversion文より先に素のversion文が解決されてしまうっぽくて、
mixin("version = hoge3;");
version(hoge3){
int x = 5;
}
と書いても
version hoge3 defined after use
と言われてしまう。

mixinがversionの評価の前に通れば、もうちょっとましにはなりそう。
(そうなるよりは、version文が進化する方がありえそうな話だけど)

version(foo)version(bar){ // foo && bar
}else{ // foo && !bar
}else version(bar){ // !foo && bar
}else{ // !foo && !bar
}
これは書きづらい上に読みづらいな。
現状では、718の言う通りversion+static ifというのが一番マシなやりかただろね。

724 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 11:52:12 ]
>>722 乙っす
なるほど
>『直す手間の割に実がない』
これがすべてだなw

725 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:46:29 ]
しかしそんなんじゃいつまで経っても普及しない希ガス

726 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:51:30 ]
そもそもウォルターには普及させる気がない気がしてる…

727 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 15:55:55 ]
でもさりげなく次の更新に修正されてるという・・・

728 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 16:06:18 ]
>>727
それはウォルターには普及させる気がないっていう不具合ですか

729 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 16:34:37 ]
それは仕様です

730 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 20:15:04 ]
ウォルタンのバグはいつ直るの?



731 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 20:24:46 ]
>>494
void rebuild(E,T)(ref T[E] array) {
T[E] result;
foreach(i, k; array.keys)
result[k] = array.values[i];
array = result;
}
テレビと同じで叩けば動くらしい。


732 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 20:24:56 ]
をるたんはをるたんの唯一の実装にして仕様そのものなので、直すべきバグは存在しません。

733 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 21:08:44 ]
flectioned の v2.007 対応のってない?

734 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 21:58:03 ]
private 定義したクラスってどういう意味になるの?普通にC++でいうstaticかと思ったら違うみたいだし。
逆にC++でいうstatic(ファイル内スコープ)なクラスはどうやったらできる?

---- b.d ----
module b;
private class B {}
private void hoge() {}

---- a.d ----
module a;
import b;
void main()
{
 B b = new B; // OK
 hoge(); // Error: function b.hoge is not accessible from a
}


735 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 22:05:43 ]
仕様によればモジュールスコープのprivateは、
Cのstaticと同じ意味になるはず。

B b = new B; もエラーにならないといけないはず。

736 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 22:30:14 ]
てことはバグかぁ。
サンクス。

まぁ、それほど困らないバグだしほっとくか・・・

737 名前:デフォルトの名無しさん [2007/11/07(水) 22:32:53 ]
>>733
flectionedをD2.007でコンパイルを通して使ってみたけど、
ちゃんと動いてないっぽい。

main関数直下でArrayBoundsError例外を発生させたら、
スタック表示はされたけど、関数名がでない。
(std.array.ArrayBoundsError) ArrayBoundsError main(80)
0x0012FD34 0x004046B3 <?>
0x0012FD4C 0x00404651 <?>
0x0012FDC4 0x004236E2 <?>
0x0012FF30 0x004023BC int main(char[][])

自前のクラスのメンバ関数でArrayBoundsError例外を発生させたら、
main関数が表示されてないし。
(std.asserterror.AssertError) AssertError Failure dbuffer.d(158)
0x0012FCDC 0x0040341F <?>
0x0012FCF4 0x004033BD <?>
0x00000043 0x0042244E <?>

ていうか、さっき初めて使ったので、なんか使い方を間違ってるのかも。
とりあえず[わなD]を見ながら使ってみたよ。
www.kmonos.net/alang/wnd/topics/flectioned.ja.html

flectionedがちゃんと使えるようになると便利いいんだけどな。
それにしても[わなD]はいつも助かるぜー。ありがたい。


738 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 00:55:02 ]
>>737
うp


739 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 02:04:41 ]
DDocについて、dittoの挙動が

///Params:x=aaa
void func(int x){}
///ditto
void func(double x){}

void func (int x);
void func (double x);
  Params:
  int x  aaa

ってかんじに、xの型がintってあたりが納得いかないんだが…と地味に思った。
この場合どうしたらいい感じに出力できるのかな?
CandyDocとか使うと結構きれいに出てくれて素敵なんだけど…こういう細かいところがなぁ…

740 名前:733 mailto:sage [2007/11/08(木) 02:34:43 ]
自分でポートしてみた。
(std.array.ArrayBoundsError) ArrayBoundsError bug(25)
0xBFB35C74 0x08052158 extern(C) void _d_array_bounds(char[], uint)
0xBFB35C88 0x0804B389 void bug.__array
0xBFB35CA0 0x0804B2F6 void bug.foo()
0xBFB35CB8 0x0804B31E int main(char[][])

なんかちがうね?なんでだろ?>>737
当方 linux




741 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 13:08:56 ]
>>739
それもきっと>>722ってことなんだろうなぁ。

もう>>722の金言は「D言語の哲学」として>>1に張っとくといいんじゃね?

742 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 13:42:07 ]
そんあこといわれたら全部>>722って言われちゃいます><

743 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 14:11:54 ]
size_t l;
stream.read(l);
array.length = l;
これ地味に面倒じゃねwwww
array.length = stream.read!(size_t);
とかで簡単にかけたら便利そうだなあああああああ

744 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 15:40:26 ]
動的配列なのにわざわざ先にサイズ指定しなくてもと思うけど・・・。

745 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 16:40:24 ]
動的配列だから先にサイズを読み込むんじゃ…?

746 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 16:59:45 ]
別に配列関係ないだろ。

747 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 17:08:31 ]
ラムダ式まだー

748 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 17:09:28 ]
>>743
をるたんにその便利さを説けば入れてくれるんじゃね?

749 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 17:24:18 ]
>>743 自分で関数書いたらよくね?

750 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 17:29:47 ]
配列以外にも拡張メソッド構文が採用されれば、できるな。



751 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 17:32:25 ]
ブライト艦長としては、既にDの開発に使える人生のリソースを100%使っていて、
どこをイジるかってのは完全にリソースの振り分け、優先順位の問題なのだろうし、
もうしばらくは優先順位の極めて高いwktkなアイディアが常に溢れた状態だろうから、
よっぽどの相対的価値をアピールしない限り、振り向いてはくれないだろうね。

752 名前:デフォルトの名無しさん [2007/11/08(木) 21:31:57 ]
>>738
コンパイルが通るだけで動作確認ができてないですけど、
もしどこかに簡単にアップできる先があればアップしますよ。

>>740
おー、ご自分でポートされたんですね。
ちゃんと動いてるっぽくていいなー。

[わなD]を見ると、私のほうでちゃんとでてないのは、
-gオプションで再コンパイルしたphobos使ってないからかも。

ちなみにうちは、WindowsXP / dmd2.0007 / phobos / dsss で稼動させてます。








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

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

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