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");
これなら呼べる。