LINUX.ORG.RU

Properties, Vala

 


1

1

Всем привет

Подскажите, как исправить синтаксические ошибке в этом коде?

using Gee;

public class Property : Object 
{}

public class PropertiesHolder : Object {
    private Gee.List<Property> props;

    private Object createProperty() {
        props.add(new Property ());
        return props.last();
    }

    public Object property {
        get {
            return (unowned) createProperty ();
        }
    };
}

Компилятор пишет:

$valac test.vala --pkg gee-0.8
test.vala:16.30-16.43: error: syntax error, expected `;'
            return (unowned) createProperty ();
                             ^^^^^^^^^^^^^^
test.vala:20.1-20.0: error: syntax error, expected get, set, or construct

В чем тут проблема?



Последнее исправление: sotlef (всего исправлений: 1)

А зачем вообще нужен этот метод createProperty? Без него всё работает.
Правда, я немного переписал код и использую GLib.List вместо Gee.List, но это не должно быть проблемой.

public class Prop : Object {
}

public class PropertiesHolder : Object {
    private List<Prop> props;

    public Object prop {
        get {
            props.append(new Prop());
            return (Object)props.last();
        }
    }

    public static int main(string[] args) {
        return 0;
    }
}
Может, я что-то упустил.

CYB3R ★★★★★
()
Ответ на: комментарий от CYB3R

Проблема как раз в Gee.List... Такой пример не скомпилируется:

using Gee;

public class Prop : Object {
}

public class PropertiesHolder : Object {
    private Gee,List<Prop> props;

    public Object prop {
        get {
            props.add(new Prop());
            return (Object)props.last();
        }
    }

    public static int main(string[] args) {
        return 0;
    }
}
test.vala:12.13-12.40: error: Return value transfers ownership but method return type hasn't been declared to transfer ownership
            return (Object)props.last();
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Compilation failed: 1 error(s), 0 warning(s)

Ладно, тогда на GLib буду дальше писать

sotlef
() автор топика

Подскажите, как исправить синтаксические ошибке в этом коде?

Научиться писать на Vala.

Virtuos86 ★★★★★
()
Ответ на: комментарий от sotlef

сделать вот так:

using Gee;

public class Prop : Object {
}

public class PropertiesHolder : Object {
    private Gee.List<Prop> props;

    public Object prop {
        owned get {
            props.add(new Prop());
            return (Object)props.last();
        }
    }

    public static int main(string[] args) {
        return 0;
    }
}

Athor ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.