本記事は「それはなんと解説したらよいのだろう」で上書きしてしまったたため、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; } |
関数(型)や関数へのポインタ型の式を直接デリゲート型へ変換することは不可能ですが、デリゲート型の式が要求される場面では、デリゲートリテラルとして直接コードを記述できるので、関数などからデリゲートへの変換は容易そうです。
スポンサード リンク |
この記事のカテゴリ
- D ⇒ それはなんと形容したらよいのだろう