我是 haxe 编程的新手,当我构建程序时它输出:
Member variable initialization is not allowed outside of class constructor
有谁知道如何在不更改初始化数据成员的情况下解决这个问题?
我是 haxe 编程的新手,当我构建程序时它输出:
Member variable initialization is not allowed outside of class constructor
有谁知道如何在不更改初始化数据成员的情况下解决这个问题?
首先,如果您让我们知道您使用的是哪个版本的 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);
}
}