我是haxe编程的新手,当我构建我的程序时输出:
Member variable initialization is not allowed outside of class constructor
有没有人知道如何解决这个问题,而不更改初始化数据成员?
答案 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);
}
}