1

我从Vala 的内存管理解释中翻译的这段代码

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

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

但我现在有一些麻烦。

1:编译

错误:语法错误,预期的声明,但得到 `[' 与前一行结束 [不可变]

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

我怎样才能正确地将它翻译成精灵?

4

1 回答 1

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

多个属性应以逗号分隔。

于 2016-01-12T11:24:50.227 回答