Genie的不可变紧凑类的复制功能

时间:2016-01-12 09:00:20

标签: genie

我翻译的代码 Vala's Memory Management Explained

部分: 具有复制功能的不可变紧凑类

我试着运行那个vala的代码。它按预期工作。

但我现在遇到了一些麻烦。

1:编译

  

错误:语法错误,预期声明但得到`['与前一行[Immutable]

2:我删除了所有属性

  

错误:在void函数中返回值

     

返回新的Foo()

3:给它一个返回值

construct copy (): Foo
  

错误:语法错误,预期标识符

construct copy (): Foo

我的代码:

[indent = 4]

[Compact]
[Immutable]
[CCode (copy_function = "foo_copy")]
class Foo
    def method ()
        print "METHOD"

    construct copy ()
        return new Foo ()


init
    var foo = new Foo ()
    foo.method ()
    var bar = foo

如何正确地将其翻译为Genie?

1 个答案:

答案 0 :(得分:2)

您已将Vala中的返回值Foo与构造函数混淆。在Genie中,代码将是:

[indent = 4]

[Compact, Immutable, CCode (copy_function = "foo_copy")]
class Foo
    def method ()
        pass

    def copy ():Foo
        return new Foo ()

init
    var foo = new Foo ()
    foo.method ()
    var bar = foo

多个属性应以逗号分隔。