是否瓦拉支持自动调用?(Does Vala support self-invoking?)

2019-10-29 17:25发布

是否有瓦拉支持自动调用什么办法? 无论是一类,或者用一种方法?

JavaScript的支持自调用像下面。 这正是即时寻找。

   (function(){
   // some code…
   })();

我试图一个类加载到一个HashMap的动态加载。

Answer 1:

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;
}

如果你需要一个目标在您的代理,你必须写一个包装,看到了这个问题: 含有方法作为值啧啧的HashMap

正如你所看到的,你不需要自我invokation。 自invokation会是这个样子:

int main() {
        (() => { stdout.printf("Hello world!\n"); })();
        return 0;
}

这不是由瓦拉支持(我与华劣克,0.22测试这一点)。

调用委托VAR按预期工作:

delegate void MyDelegate();

int main() {
        MyDelegate d = () => { stdout.printf("Hello world!\n"); };
        d();
        return 0;
}


文章来源: Does Vala support self-invoking?