call

う〜ん・・・call()を挟まないとダメか・・・

  1 import std.stdio;
  2
  3 typedef void function() voidfunc_t; // test
  4 typedef void function(char[]) OptionHandler;
  5
  6 void func()
  7 {
  8     writefln("hi :)");
  9 }
 10
 11 void usage(char[] dummy)
 12 {
 13     dummy = null;
 14     writefln("Usage: hi :-)");
 15 }
 16
 17 void call(OptionHandler optfn, char[] str)
 18 {
 19     optfn(str);
 20 }
 21
 22 int main(char[][] args)
 23 {
 24     voidfunc_t vft; // test
 25     OptionHandler[char[]] optfn;
 26
 27     vft = &func; // test
 28     optfn["usage"] = &usage;
 29
 30     writefln("%s", vft); // test
 31     vft(); // test
 32     call(optfn["usage"], "hogehoge");
 33     return 0;
 34 }
~
~                    

自分としては

optfn["usage"];

これだけで呼べるのが理想なんだけどなー。

関数型とvoidはKeyTypeにできません。

http://www.kmonos.net/alang/d/arrays.html#associative

う〜〜ん・・・
mixinにしてみるとかか。

追記:な〜んだw()付いてないだけだった。

optfn["usage"]("hogehoge");

これなら呼べる。