Vala 有什么方法支持自我调用?使用类还是使用方法?
Javascript 支持如下所示的自调用。这就是我要找的。
(function(){
// some code…
})();
我正在尝试将一个类加载到哈希图中以进行动态加载。
Vala 有什么方法支持自我调用?使用类还是使用方法?
Javascript 支持如下所示的自调用。这就是我要找的。
(function(){
// some code…
})();
我正在尝试将一个类加载到哈希图中以进行动态加载。
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 contains 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;
}