Vala是否支持自我调用?是使用类还是使用方法?
Javascript支持自我调用,如下所示。这就是我正在寻找的。 p>
(function(){
// some code…
})();
我正在尝试将一个类加载到一个hashmap中以进行动态加载。
答案 0 :(得分:0)
using Gee;
[CCode (has_target = false)]
delegate void MyDelegate();
int main() {
var map = new HashMap<string, MyDelegate>();
map["one"] = () => { stdout.printf("1\n"); };
map["two"] = () => { stdout.printf("2\n"); };
MyDelegate d = map["two"];
d();
return 0;
}
如果您需要在委托中使用目标,则必须编写包装器,请参阅以下问题: Gee HashMap containing methods as values
如您所见,您不需要自我调用。自我调用看起来像这样:
int main() {
(() => { stdout.printf("Hello world!\n"); })();
return 0;
}
Vala不支持此功能(我使用valac-0.22进行了测试)。
调用委托var按预期工作:
delegate void MyDelegate();
int main() {
MyDelegate d = () => { stdout.printf("Hello world!\n"); };
d();
return 0;
}