如何在haxe程序中解决成员变量初始化错误?

时间:2013-09-29 23:58:51

标签: haxe

我是haxe编程的新手,当我构建我的程序时输出:

Member variable initialization is not allowed outside of class constructor

有没有人知道如何解决这个问题,而不更改初始化数据成员?

1 个答案:

答案 0 :(得分:1)

首先,如果您告诉我们您使用的是哪个版本的Haxe,以及产生错误的源代码,最好是以最小的形式,这可能会有所帮助。

我说这个的原因是最新的Haxe版本(3.0.1)我相当肯定没有生成那个确切的错误信息......除非我弄错了:)所以很难知道你是什么版本使用并且很难知道问题可能是什么。

我猜:您正在使用不允许的成员变量初始化。在旧版本的Haxe中根本不允许,在Haxe 3中,它仅允许“常量”值(字符串,整数等)。我在Haxe 3中收到错误消息“变量初始化必须是常量值”,但错误消息可能在版本之间发生了变化。

代码破碎

class Initialization
{
    static function main() {
        new Initialization();
    }

    var myInt = 0;
    var myString = "some string";
    var myArray = [1,2,3]; // Error: "Variable initialization must be a constant value"

    public function new() {
        trace(myInt);
        trace(myString);
        trace(myArray);
    }
}

工作代码

class Initialization
{
    static function main() {
        new Initialization();
    }

    var myInt = 0;
    var myString = "some string";
    var myArray:Array<Int>; // Define the type, but don't initialize here

    public function new() {
        myArray = [1,2,3]; // Initialize in the constructor
        trace(myInt);
        trace(myString);
        trace(myArray);
    }
}

编辑:哦,你在使用Haxe 2.09。没有内联初始化;)

class Initialization
{
    static function main() {
        new Initialization();
    }

    // Define the type, but don't initialize here
    var myInt:Int;
    var myString;
    var myArray:Array<Int>;

    public function new() {
        // Initialize in the constructor
        myInt = 0;
        myString = "some string";
        myArray = [1,2,3];
        trace(myInt);
        trace(myString);
        trace(myArray);
    }
}