Функция копирования неизменного компактного класса для Genie
Этот код я перевёл из объяснения Vala's Memory Management
раздел:неизменяемые компактные классы с функцией копирования
Я пытаюсь запустить код этого Вала. Это работает как аспект.
Но сейчас у меня проблемы.
1: компилировать
ошибка: синтаксическая ошибка, ожидаемое объявление, но есть `['с предыдущим концом строки [неизменяемый]
2: я удаляю все атрибуты
ошибка: возврат со значением в пустую функцию
вернуть новый 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 ответ
Решение
Вы перепутали возвращаемое значение, 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
Несколько атрибутов должны быть разделены запятыми.