程式語言 Haxe 4.0 發布

可用的 工具包發布 哈克斯4.0,其中包括具有強類型的同名多範式高級程式語言、交叉編譯器和標準函數庫。此專案支援翻譯為C++、HashLink/C、JavaScript、C#、Java、PHP、Python 和Lua,以及編譯為JVM、HashLink/JIT、Flash 和Neko 字節碼,並可存取每個目標平台的本機功能。編譯程式碼 分發者 根據 GPLv2 許可證,以及為 Haxe 開發的標準庫和虛擬機 在麻省理工學院的許可下。

語言是 表達導向 具有較強的打字能力。支援物件導向、一般性和函數式程式設計概念。
Haxe 語法接近 ECMAScript 且 展開 其功能包括靜態型別、自動型別推斷、模式比對、泛型、基於迭代器的for 迴圈、AST 巨集、GADT(廣義代數資料型別)、抽象型別、匿名結構、簡化數組定義、條件編譯表達式、將元資料附加到欄位、類別和表達式、字串插值(「我的名字是 $name」)、類型參數(“new Main('foo')”)以及 蒙諾戈耶德魯戈耶.

類別測試{
靜態函數 main() {
var 人 = [
“伊麗莎白”=>“編程”,
“喬爾”=>“設計”
];

for (people.keys() 中的名稱) {
var job = people[姓名];
Trace(‘$name 靠$工作謀生!’);
}
}
}

主要的 創新 4.0版本:

  • 用於指定函數類型「(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

添加評論