linux - 瓦拉文件导入

标签 linux oop vala

在 Vala 语言中处理分隔文件中的属性时遇到问题

Main.vala 文件是

using Teste;
using Cagado;

static int main(string[] args)
{   
   GUI gui = new GUI();
   stdout.printf("%d\n", gui.idade);
   return 0;
}

HelloVala.vala 是:

namespace Teste
{
    public class Person : Object
    {
        private int _age = 32;

        public int age
        {
            get { return _age; }
            set { _age = value; }
        }
    }
}

Cagado.vala 是:

using Teste;

namespace Cagado
{
    public class GUI : Object
    {
        Person _person = new Person();
        _person.age = 35;
        private int _idade;

        public int idade
        {
            get { return _idade; }
            set { _idade = value; }
        }
    }
}

当我编译这段代码时,编译给我错误消息:

Cagado.vala:9.15-9.15: error: syntax error, expected identifier
    _person.age = 35;
                ^

我用 C# 编程,而这在面向 C# 的对象系统中没有发生。 有人可以解释一下吗?

最佳答案

问题是这样的:

public class GUI : Object
{
    Person _person = new Person();
    _person.age = 35; // <--
    ...

您不能将任意代码放入类本身,只能是声明。你需要做的是像

public class GUI : Objects
{
    Person _person = new Person();
    construct {
        _person.age = 35;
    }

您还可以修改为 Person 类添加一个构造函数:

namespace Teste
{
    public class Person : Object
    {
        private int _age = 32;

        public int age
        {
            get { return _age; }
            set { _age = value; }
        }

        public Person(int age) {
            GLib.Object (age: age);
        }
    }
}

然后做

public class GUI : Object
{
    Person _person = new Person(35);

关于linux - 瓦拉文件导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29859723/

相关文章:

linux - 只要子进程仍在运行,就在父进程中每 90 秒在 perl 中记录一次消息

javascript - 访问 parent 的属性(property)

oop - 为什么类的私有(private)部分被视为接口(interface)?

linux - Eclipse Luna 不工作(Kali Linux)

linux - 记录曾经使用过的每个 linux 命令行?

actionscript-3 - 在 AS3 中组合颜色和 Alpha

使用 Vala 和 GLib 的正则表达式

autotools - automake:添加对 _PROGRAMS 目标的依赖关系

environment-variables - 如何访问 Vala 中的环境变量?

linux - 打印包含 11 行的每个数据 block