如下是Haxe裏面的一些數據類型html
1. 基本類型
Bool, Float, Intide
2. 空特性
因爲Haxe能夠被編譯爲各類不一樣的target,不一樣語言對於給基本類型賦"null"值的做法都不一樣。動態語言能夠給基本類型賦null,可是靜態語言不能夠。爲了處理這些不一樣,在給基本類型賦"null"值時,在haxe裏就須要作一些特殊處理,用"Null<T>"修飾類型函數
var nullValue : Null<Int> = null;
3. 類this
class Point { var x : Int; var y : Int; public function new(x,y) { this.x = x; this.y = y; } public function toString() { return "Point("+x+","+y+")"; } }
- new方法是構造函數
- 其餘地方和別的語言沒大區別spa
3.1 繼承
使用extends來繼承
子類的構造函數不是必須的,但若是要建立本身的構造函數,則必須先調用super()
若子類要覆寫父類的方法,則必須使用override關鍵字code
3.2 接口
關鍵字:interface
接口內方法不須要實現
接口內的全部方法及屬性都必須明確類型
- 若一個類同時繼承多個接口,每一個接口都以implements開頭htm
4. 枚舉類型blog
enum Color {
Red;
Green;
Blue;
Rgb(r:Int, g:Int, b:Int);
}
Red, Green, Blue, Rgb(r:Int, g:Int, b:Int)這些都是這個枚舉類型(Color)的構造器。
Haxe裏有一個特殊類型——"EnumValue",全部的枚舉實例都能賦值給這種類型的變量繼承
var ec:EnumValue = Red;
5. 匿名結構
用於一堆數據的集合接口
var user = { name : "Nicolas", age : 32, pos : [ { x : 0, y : 0 }, { x : 1, y : -1 } ], };
6. 方法
static function test(i:Int, s:String):Bool { return true; }
6.1 可選參數
在參數前加"?",表明此參數爲可選參數
static function test(?i:Int, ?s:String):Bool
6.2 給參數賦默認值
使用=號
static function test(i = 12, s = "bar") { return "i: " +i + ", s: " +s; }
7. 動態
若是一個Class實現動態接口,那麼這個class會有一個特殊的方法:resolve。當在main裏頭訪問一個不存在的屬性或方法時,系統會自動調用該方法,並把嘗試訪問的屬性名或方法名看成參數傳進resolve方法裏。
class Resolve implements Dynamic<String> { public var present:Int; public function new() {} function resolve(field:String) { return "Tried to resolve " +field; } } class Main { static public function main() { var c = new Resolve(); c.present = 2; trace(c.present); trace(c.resolveMe); } }
8. 抽象(看不懂,之後補充:http://haxe.org/manual/types-abstract.html)
abstract AbstractInt(Int) { inline public function new(i:Int) { this = i; } }