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

Immutable compact class's copy function for Genie

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

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

我已经尝试 运行 那个 vala 的代码。它按方面工作。

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

1:编译

error: syntax error, expected declaration but got `[' with previous end of line [Immutable]

2:我删除所有属性

error: Return with value in void function

return new Foo ()

3:给它一个return值

construct copy (): Foo

error: syntax error, expected identifier

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?

您将 Vala 中的 return 值 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

多个属性应以逗号分隔。