Ukukhishwa kolimi lokuhlela Haxe 4.0

Iyatholakala ukukhululwa kwekhithi yamathuluzi I-Haxe 4.0, okufaka ulimi lohlelo lwezinga eliphezulu lezinga eliphezulu le-multi-paradigm elinokuthayipha okuqinile, i-cross-compiler kanye nomtapo wezincwadi ojwayelekile wemisebenzi. Le phrojekthi isekela ukuhunyushelwa ku-C++, HashLink/C, JavaScript, C#, Java, PHP, Python kanye ne-Lua, kanye nokuhlanganiswa kwe-JVM, HashLink/JIT, Flash kanye ne-Neko bytecode, ngokufinyelela kumakhono omdabu epulatifomu ngayinye eqondiwe. Ikhodi ye-Compiler isatshalaliswa ngu ngaphansi kwelayisensi ye-GPLv2, kanye nomtapo wolwazi ojwayelekile kanye nomshini obonakalayo owenzelwe i-Haxe UNeko ngaphansi kwelayisensi ye-MIT.

Ulimi okuqondiswe ekuboniseni ngokuthayipha okuqinile. Imiqondo yokuhlela egxile entweni, ejwayelekile futhi esebenzayo iyasekelwa.
I-syntax ye-Haxe iseduze ne-ECMAScript futhi liyanwebeka izici zayo njengokuthayipha okumile, ukuchazwa kwe-autotype, ukufaniswa kwephethini, amajenerikhi, i-iterator-based for looops, AST macros, GADT (Izinhlobo Zedatha Ye-Algebraic Ejwayelekile), izinhlobo ezingabonakali, izakhiwo ezingaziwa, izincazelo zamalungu afanayo lula, izinkulumo zokuhlanganiswa ezinemibandela , ukunamathisela imethadatha ezinkambuni , amakilasi nezinkulumo, ukuhumusha kweyunithi yezinhlamvu ('Igama lami ngingu-$name'), thayipha amapharamitha ("i-Main‹String›('foo') entsha"), kanye okuningi kakhulu.

Ukuhlolwa kwekilasi {
umsebenzi omile main() {
abantu = [
"Elizabeth" => "Ukuhlela",
"Joel" => "Idizayini"
];

ngoba (igama kubantu.keys()) {
var job = people[igama];
trace('igama le-$ lenza umsebenzi wokuziphilisa!');
}
}
}

main emisha inguqulo 4.0:

  • I-syntax entsha yokucacisa uhlobo lomsebenzi "(igama:Uchungechunge, ubudala:Int)->I-Bool" noma "(Uchungechunge, Int)->I-Bool" esikhundleni sokuthi "String->Int->Bool".
  • I-syntax yomsebenzi womcibisholo ithi "(a, b) -> a + b" esikhundleni sokuthi "umsebenzi(a, b) buyisela u-+b".
  • Ukuvikelwa ezinkingeni ezihlobene nokusetshenziswa kwamanani we-Null (isici sokuhlola, esinikwe amandla ngokuzithandela kwezinye izinkambu, amakilasi noma amaphakheji).
  • Igama elingukhiye "lokugcina" lingelezinkambu zekilasi neziguquguqukayo zendawo ezingaguquleki. "okugcina" kungase futhi kusetshenziselwe ukuchaza imisebenzi ukuze kuvinjwe ukuthi ingachithwa ifa kanye nezigaba/izixhumi ezibonakalayo ezingenakuzuza njengefa.
  • ukweseka Izinga le-Unicode lohlobo oluyisisekelo elithi "String" kukho konke okuqondiwe kokuhlanganiswa ngaphandle kwe-Neko.
  • Umhumushi owakhelwe ngaphakathi ubhalwe kabusha kusukela ekuqaleni, manje oseza ngaphansi kwegama Linganisa. Ngenxa yotolika omusha, imibhalo namamakhro agijima ngokushesha okukhulu. Imodi yokulungisa iphutha esebenzayo iyasekelwa.
  • Isistimu entsha eqondiwe yokuhlanganiswa (okuhlosiwe) I-Hashlink - isikhathi sokusebenza esisebenza kahle kakhulu esiklanyelwe ngokuqondile i-Haxe, esekela ukuhlanganiswa kwe-bytecode ye-JIT noma i-C, sinokuhlanganisa okulula no-C, kanye nokufinyelela ezinhlotsheni zezinombolo ezisezingeni eliphansi nezikhombi.
  • Ithagethi entsha ye-JVM - ikuvumela ukuthi ukhiqize i-jvm bytecode ngokweqa isinyathelo sokuhlanganiswa kwekhodi ye-Java ngokungeza ifulegi elithi "-D jvm" lapho uqondise ku-Java.
  • Amandla okusebenzisa emgqeni endaweni yokubiza imisebenzi noma abakhi, noma ngabe kungashiwongo kanjalo.
  • Amathuba okufakwa izandiso ezimile lapho umemezela uhlobo (olufana ne-"enum") usebenzisa "@:using(path.ToExtension)".
  • Izinhlobo ezingabonakali manje zisekela inguqulo ethi "set" ye-opharetha ethi "@:op(ab)" ukuze ilayishe kabusha izinkulumo ze-"obj.foo = bar".
  • I-loop syntax ethi "for" manje isekela ukuphindaphinda kwenani elingukhiye: "for (key => value in collection) {}".
  • Usekelo lokusebenzisa imakhaphu efana ne-xml kuzinkulumo: “var a = ‹hi/›;”. Okwamanje, lesi sici sitholakala kuphela ekuhlukaniseni ngama-macros futhi sisezingeni lokuklama.
  • I-syntax yezinkambu ozikhethela yona ekuphawulweni “okugcwele” kwezinhlobo zesakhiwo esingaziwa ithi: “{ var ?f:Int; }" (okunye okufushane "{ ?f:Int }").
  • Amanani e-Enum manje angaba amanani azenzakalelayo ama-agumenti omsebenzi: "function foo‹T›(option:Option‹T› = None)".
  • I-syntax ethi "enum abstract Name(BasicType) {}" ayisadingi isiqalo esithi "@:" ku-"enum".
  • Ukufaka izinombolo ngokuzenzakalelayo ezibalweni ezingabonakali:

    i-enum abstract Foo(Int) {
    i-var A; // 0
    i-var B; // 1
    }
    Ibha ye-enum abstract (Uchungechunge) {
    i-var A; // "A"
    i-var B; // "B"
    }

  • Igama elingukhiye "langaphandle" alisadingi ukusetshenziswa kwesiqalo "@:".
  • Kususwe inketho "izinsiza Dynamic" ukuze ufinyelele izinkambu zekilasi ngeyunithi yezinhlamvu. Itholakalela amakilasi angaphandle noma ngokusetshenziswa ngohlobo lwe-abstract.
  • Kwengezwe i-syntax ethi "A & B" yohlobo lwempambanondlela, okwamanje esebenza kuphela ezakhiweni ezingaziwa futhi thayipha imingcele yepharamitha. I-syntax endala yokukhawulela isusiwe.
  • Ukudala izimo "zemephu" ezingenalutho kuyatholakala nge-syntax "var map:Map‹Int, String› = [];" efana nohlu.
  • Isakhiwo sedatha esingeziwe "haxe.ds.ReadOnlyArray".
  • Imethadatha manje ingaba nezikhala zamagama (“@:prefix.name function() {…}”). Ngokufanayo nezincazelo: “#if (some.flag ... #end”.
  • Iphrothokholi yesevisi entsha yama-IDE asetshenziswa kuyo i-plugin ye-VSCode.
  • Kubuyekezwe izincazelo zangaphandle (zangaphandle) zama-Web API futhi kwengeza ezingekho.

Source: opennet.ru

Engeza amazwana