本記事は「それはなんと解説したらよいのだろう」で上書きしてしまったたため、12月16日に復旧させたものです。


よその言語のデリゲートはどんな風なんだろうと気になって、Digital MarsのDコンパイラ、DMD 2.007をダウンロードしてみました。リンカはC/C++と共用なんですね。だからといって別途ダウンロードしなければならないのはどうかと思いましたけど。

そんなわけで、リファレンスやサンプルコードを眺めているだけだったD言語にちょっと手を付けてみました。

とりあえずHello, worldから……、早速、無駄にデリゲート使ってみました。

import std.stdio;
 
void printMessage(const(char)[] msg)
{
	writefln(msg);
}
 
void proc1(void delegate(const(char)[]) f, const(char)[] s)
{
	f(s);
}
 
int main(char[][] args)
{
	proc1(delegate (const(char)[] s) {printMessage(s);},
		"hello, world");
	return 0;
}

関数(型)や関数へのポインタ型の式を直接デリゲート型へ変換することは不可能ですが、デリゲート型の式が要求される場面では、デリゲートリテラルとして直接コードを記述できるので、関数などからデリゲートへの変換は容易そうです。

スポンサード リンク

この記事のカテゴリ

  • ⇒ それはなんと形容したらよいのだろう