How do Valas closures map to Genie?

与世无争的帅哥 提交于 2019-12-30 06:41:25

问题


The Vala Tutorial has an example about DBus using anonymous methods.

Bus.own_name (BusType.SESSION, "org.example.DemoService", /* name to register */
              BusNameOwnerFlags.NONE, /* flags */
              on_bus_aquired, /* callback function on registration succeeded */
              () => {}, /* callback on name register succeeded */
              () => stderr.printf ("Could not acquire name\n")); /* callback on name lost */

I am trying to rewrite this code in Genie, but could not manage to convert the two last lines. The Genie Tutorial only has an example on how to use a closure to define an event handler.

f.my_event += def (t, a)
    print "event was detected with value %d", a

How do I use anonymous method definitions in a method call with Genie?


回答1:


I think there is not way. You must call another process using "def".

Bus.own_name (BusType.SESSION, "org.example.DemoService", 
          BusNameOwnerFlags.NONE, 
          on_bus_aquired, 
          reg,
          err);

def reg()
    pass

def err()
    print "error"



回答2:


This isn't possible at the moment:

https://bugzilla.gnome.org/show_bug.cgi?id=746704

Currently Genie only support the deprecated lambda syntax for signals (+=). This patch provides lambda support in most constructs, the only requirement is that braces and parens need to be indent-balanced on multiple line constructs.



来源:https://stackoverflow.com/questions/24352222/how-do-valas-closures-map-to-genie

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!