語言是
Haxe 語法接近 ECMAScript 且
類別測試{
靜態函數 main() {
var 人 = [
“伊麗莎白”=>“編程”,
“喬爾”=>“設計”
];
for (people.keys() 中的名稱) {
var job = people[姓名];
Trace(‘$name 靠$工作謀生!’);
}
}
}
主要的
- 用於指定函數類型「(name:String,age:Int)->Bool」或「(String, Int)->Bool」而不是「String->Int->Bool」的新語法。
- 箭頭函數語法是「(a, b) -> a + b」而不是「function(a, b) return a + b」。
- 防止與使用 Null 值相關的問題(實驗功能,可以選擇為某些欄位、類別或套件啟用)。
- “final”關鍵字用於不可變的類別字段和局部變數。 「final」也可以用來定義函數,以防止它們被繼承覆寫以及用於無法繼承的類別/介面。
-
支持 除 Neko 之外的所有編譯目標上基本類型“String”的 Unicode 標準。 - 從頭開始重寫的內建解釋器,現在以這個名稱命名
評估 。由於新的解釋器,腳本和巨集的運行速度更快。支援互動式調試模式。 - 新的編譯目標系統(target)
哈希連結 - 專為 Haxe 設計的高效能運行時,支援編譯為 JIT 或 C 的字節碼,可輕鬆與 C 集成,並可存取低階數位類型和指針。 - 新的 JVM 目標 - 允許您在 Java 中定位時新增「-D jvm」標誌,從而跳過 Java 程式碼編譯步驟來產生 jvm 字節碼。
- 能夠在呼叫函數或建構函數時進行內聯部署,即使它們沒有這樣聲明。
- 納入的可能性
靜態擴充 使用“@:using(path.ToExtension)”宣告類型(例如“enum”)時。 - 抽象類型現在支援「@:op(a.b)」運算子的「set」版本來重新載入「obj.foo = bar」表達式。
- 「for」迴圈語法現在支援鍵值迭代:「for (key => value in collection) {}」。
- 支援在表達式中使用類似 xml 的標記:「var a = ;」。目前,該功能僅適用於巨集解析,並且處於設計階段。
- 匿名結構類型的「完整」表示法中可選欄位的語法為:「{ var ?f:Int; }」(短「{ ?f:Int }」的替代方案)。
- 枚舉值現在可以作為函數參數的預設值:「function foo(option:Option = None)」。
- “enum Abstract Name(BasicType) {}”語法不再需要“enum”中的“@:”前綴。
- 抽象枚舉的自動編號:
枚舉抽象 Foo(Int) {
變種A; // 0
變種B; // 1
}
枚舉抽象 Bar(String) {
變種A; // “A”
變種B; //“B”
} - “extern”關鍵字不再需要使用“@:”前綴。
- 刪除了選項“實施 Dynamic”透過字串存取類別欄位。可用於外部類別或透過抽象類型實現。
- 為類型交集新增了「A & B」語法,目前僅適用於匿名結構和類型參數約束。舊的約束語法已被刪除。
- 可透過語法「var map:Map> = [];」建立空白「Map」實例類似數組。
- 新增了資料結構「haxe.ds.ReadOnlyArray」。
- 元資料現在可以有命名空間(“@:prefix.name function() {…}”)。與定義類似:「#if (some.flag ... #end」。
- 用於 IDE 的新服務協議
VSCode 插件 . - 更新了 Web API 的外部定義 (extern) 並新增了缺少的定義。
來源: opennet.ru