Pagpagawas sa programming language nga Haxe 4.0

Magamit pagpagawas sa toolkit Haxe 4.0, nga naglakip sa multi-paradigm high-level programming language nga parehas nga ngalan nga adunay kusog nga pag-type, usa ka cross-compiler ug usa ka standard nga librarya sa mga gimbuhaton. Gisuportahan sa proyekto ang paghubad sa C++, HashLink/C, JavaScript, C#, Java, PHP, Python ug Lua, ingon man ang paghugpong sa JVM, HashLink/JIT, Flash ug Neko bytecode, nga adunay access sa lumad nga kapabilidad sa matag target nga plataporma. Compiler code giapod-apod sa ubos sa lisensya sa GPLv2, ug usa ka standard nga librarya ug usa ka virtual nga makina nga gihimo alang sa Haxe neko ubos sa lisensya sa MIT.

Ang pinulongan mao oriented sa ekspresyon uban ang kusog nga pag-type. Gisuportahan ang Object-oriented, generic ug functional nga mga konsepto sa programming.
Ang Haxe syntax duol sa ECMAScript ug nagpalapad ang mga bahin niini sama sa static nga pag-type, autotype inference, pattern matching, generics, iterator-based for loops, AST macros, GADT (Generalized Algebraic Data Types), abstract nga mga tipo, anonymous nga mga istruktura, gipasimple nga mga depinisyon sa array, conditional compilation expressions, attaching metadata to fields , mga klase ug ekspresyon, interpolation sa string ('Ang akong ngalan kay $name'), type parameters ("bag-ong Main‹String›('foo')"), ug daghan pa.

klase nga Pagsulay {
static function main() {
var mga tawo = [
"Elizabeth" => "Pagprograma",
"Joel" => "Disenyo"
];

kay (ngalan sa people.keys()) {
var trabaho = mga tawo [ngalan];
trace('$ngalan kay $trabaho para panginabuhian!');
}
}
}

nag-unang mga inobasyon bersyon 4.0:

  • Bag-ong syntax alang sa pagtino sa tipo sa function "(ngalan: String, edad: Int) -> Bool" o "(String, Int) -> Bool" imbes nga "String->Int->Bool".
  • Ang syntax sa arrow function mao ang "(a, b) -> a + b" imbes nga "function(a, b) return a + b".
  • Proteksyon batok sa mga problema nga nalangkit sa paggamit sa Null values ​​(experimental feature, optionally enabled for certain fields, classes or packages).
  • Ang "katapusan" nga keyword alang sa mga natad sa klase ug lokal nga mga variable nga dili mausab. Ang "katapusan" mahimo usab nga gamiton aron mahibal-an ang mga gimbuhaton aron mapugngan sila nga ma-override sa kabilin ug alang sa mga klase/interface nga dili mapanunod.
  • suporta Unicode standard para sa base type nga "String" sa tanang compilation target gawas sa Neko.
  • Ang built-in nga interpreter nga gisulat pag-usab gikan sa wala, nga karon nailalom sa ngalan Pagtimbang-timbang. Salamat sa bag-ong interpreter, ang mga script ug macro mas paspas nga modagan. Gisuportahan ang interactive debugging mode.
  • Bag-ong target nga sistema alang sa pagtipon (target) Hashlink - usa ka high-performance runtime nga gidesenyo para sa Haxe, nga nagsuporta sa compilation sa bytecode para sa JIT o C, adunay sayon ​​nga pag-integrate sa C, ingon man ang access sa mga low-level nga numeric type ug pointer.
  • Bag-ong target sa JVM - nagtugot kanimo sa pagmugna og jvm bytecode pinaagi sa paglaktaw sa pag-compile nga lakang sa Java code pinaagi sa pagdugang sa "-D jvm" nga bandila kung gipunting sa Java.
  • Ang abilidad sa pag-inline-deploy sa punto sa pagtawag sa mga gimbuhaton o mga konstruktor, bisan kung wala sila gideklarar nga ingon niana.
  • Posibilidad sa paglakip static nga mga extension sa pagdeklarar ug tipo (sama sa "enum") gamit ang "@: gamit(path.ToExtension)".
  • Ang mga abstract nga tipo karon nagsuporta sa usa ka "set" nga bersyon sa "@:op(a.b)" nga operator aron i-reload ang "obj.foo = bar" nga mga ekspresyon.
  • Ang "for" loop syntax karon nagsuporta sa key-value iteration: "for (key => value in collection) {}".
  • Suporta alang sa paggamit sa sama sa xml nga markup sa mga ekspresyon: "var a = ‹hi/›;". Sa pagkakaron, kini nga bahin magamit ra para sa pag-parse gamit ang mga macro ug naa sa yugto sa disenyo.
  • Ang syntax alang sa opsyonal nga mga natad sa "puno" nga notasyon sa anonymous nga mga matang sa istruktura mao ang: "{ var ?f:Int; }" (usa ka alternatibo sa mubo nga "{ ?f:Int }").
  • Ang mga kantidad sa enum mahimo na karon nga mga default nga kantidad alang sa mga argumento sa function: "function foo‹T›(opsyon:Option‹T› = Wala)".
  • Ang "enum abstract Name(BasicType) {}" nga syntax wala na magkinahanglan sa "@:" prefix sa "enum".
  • Awtomatikong pag-numero alang sa abstract enumerations:

    enum abstract Foo(Int) {
    var A; // 0
    var B; // 1
    }
    enum abstract Bar(String) {
    var A; // "A"
    var B; // "B"
    }

  • Ang "extern" nga keyword wala na magkinahanglan sa paggamit sa "@:" prefix.
  • Gitangtang ang opsyon "pagpatuman Dynamic" aron ma-access ang mga natad sa klase pinaagi sa mga kuwerdas. Anaa alang sa gawas nga mga klase o pinaagi sa pagpatuman sa usa ka abstract nga tipo.
  • Gidugang ang "A & B" nga syntax para sa tipo nga intersection, nga sa pagkakaron magamit lamang sa mga anonymous nga istruktura ug mga limitasyon sa tipo nga parameter. Ang daan nga constraint syntax gitangtang na.
  • Ang paghimo og walay sulod nga "Map" nga mga instance anaa pinaagi sa syntax nga "var map:Map‹Int, String› = [];" susama sa usa ka array.
  • Gidugang nga istruktura sa datos nga "haxe.ds.ReadOnlyArray".
  • Ang metadata mahimo nang adunay mga namespaces (“@:prefix.name function() {…}”). Susama sa mga kahulugan: “#if (some.flag ... #end”.
  • Bag-ong service protocol para sa mga IDE nga gigamit sa plugin alang sa VSCode.
  • Gi-update nga mga eksternal nga kahulugan (extern) para sa mga Web API ug gidugang ang nawala.

Source: opennet.ru

Idugang sa usa ka comment