-2

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

Member variable initialization is not allowed outside of class constructor

有谁知道如何在不更改初始化数据成员的情况下解决这个问题?

4

1 回答 1

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);
    }
}
于 2013-10-01T04:16:59.657 回答