【问题标题】:Vala files importVala 文件导入
【发布时间】:2015-04-25 00:44:42
【问题描述】:

在使用 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# 的对象系统中没有发生。 有人可以解释一下吗?

【问题讨论】:

    标签: linux oop vala


    【解决方案1】:

    问题是这样的:

    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);
    

    【讨论】:

    • 谢谢你的帮助^_^。我想知道我在做什么问题 3 天。如果 Vala 在此功能中的工作方式与 C# 不同,您可以回答我吗?
    • 我不确定(我的 C# 非常小),但如果 C# 在这方面与 Vala 有任何不同,我会感到惊讶。 Java 不是,C++ 也不是……
    猜你喜欢
    • 2013-12-25
    • 2011-01-30
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多