3

Vala 和 Genie 的关系很像 js 和 CoffeeScript 的关系。$ coffee -bcjs 和 cs 可以使用和相互编译$ js2coffee。这里的精灵和瓦拉怎么样?

4

1 回答 1

4

您可以使用 valac --dump-tree 从 Genie 转换为 Vala。从 Vala 转换到 Genie 有点复杂,因为 libval​​a 中的 Vala.CodeWriter 类只输出 Vala,而不是 Genie。通过继承 Vala.CodeVisitor(就像 Vala.CodeWriter 所做的那样),可能可以创建输出 Genie 的东西,但目前还没有人这样做。

也就是说,我完全不知道你为什么要这样做。您可以在同一个 valac 调用中自由混合 Genie 和 Vala 文件。

修改http://live.gnome.org/Genie中的示例,将其放入 mix-genie.gs:

[indent=4]

class Foo : Object
    prop a : int

    init     
        print "foo is intitialized"

    final
        print "foo is being destroyed"

    /* only class properties may be set in creation methods */    
    construct (b : int)
        a = b

    /* only class properties may be set in creation methods */        
    construct with_bar (bar : int)
        a = bar

这在 mix-vala.vala 中:

private static int main (string[] args) {
  var foobar = new Foo (10);
  var foobar2 = new Foo.with_bar (10);

  return 0;
}

并用类似的东西编译

valac -o mix mix-genie.gs mix-vala.vala
于 2011-12-28T17:49:33.643 回答