2013-09-29 41 views

回答

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); 
    } 
} 
+0

我創造的FlashDevelop項目與NME 3.3.5和HAXE 2.09。我仍然約會同樣的錯誤。我的程序與您放置的示例類似。我無法初始化數據成員。問候 – kelvincer

+0

嗨,Haxe 2.09不支持在構造函數外初始化成員變量。 [changelog](http://haxe.org/file/CHANGES.txt)表示它在2.10中添加了。這是一個相當直接,不會突破到2.10的升級 - 我會推薦它。否則,你將不得不在構造函數中初始化你的所有值。我會用示例代碼更新我的答案。 –

+0

感謝您的回答。 – kelvincer

相關問題