Ukukhutshwa kolwimi lwenkqubo Haxe 4.0

Iyafumaneka ukukhutshwa kwezixhobo zokusebenza Haxe 4.0, equka i-multi-paradigm yolwimi lweprogram yezinga eliphezulu legama elifanayo kunye nokuchwetheza okunamandla, umqambi onqamlezayo kunye nelayibrari eqhelekileyo yemisebenzi. Iprojekthi isekela ukuguqulelwa kwi-C ++, i-HashLink / C, i-JavaScript, i-C #, i-Java, i-PHP, i-Python kunye ne-Lua, kunye nokuhlanganiswa kwi-JVM, i-HashLink / i-JIT, i-Flash kunye ne-Neko bytecode, kunye nokufikelela kwizakhono zomthonyama zeplatifomu nganye ekujoliswe kuyo. Ikhowudi yomqokeleli isasazwa ngu phantsi kwelayisensi ye-GPLv2, kunye nethala leencwadi elisemgangathweni kunye nomatshini obonakalayo ophuhliselwe i-Haxe neko phantsi kwelayisenisi ye-MIT.

Ulwimi lu ijolise kwintetho ngokuchwetheza olomeleleyo. Iikhonsepthi ezijolise kwinjongo, eziqhelekileyo kunye nezisebenzayo ziyaxhaswa.
I-syntax ye-Haxe ikufutshane ne-ECMAScript kwaye yandisa iimpawu zayo ezinjengokuchwetheza okumileyo, ukuchaneka kohlobo oluzenzekelayo, uthelekiso lwepateni, iigenerics, iterator-based for looops, AST macros, GADT (Generalised Algebraic Data Types), iintlobo ze-abstract, izakhiwo ezingachazwanga, iinkcazelo zoluhlu olulula, intetho yoqulunqo olunemiqathango, incamathela imetadata kwimimandla , iiklasi kunye namabinzana, uguqulelo lomtya ('Igama lam ndingu-$name'), uhlobo lweeparamitha ("intsha Main‹String›('foo')"), kunye Okuninzi.

Uvavanyo lweklasi {
umsebenzi ongatshintshiyo () {
abantu abaqhelekileyo = [
"Elizabeth" => "Ukucwangcisa",
"Joweli" => "Yila"
];

kuba (igama kubantu.izitshixo()) {
var umsebenzi = abantu[igama];
trace(‘igama le-$ lenza umsebenzi we-$ ukuze uziphilise!’);
}
}
}

Siseko ezintsha inguqulo 4.0:

  • I-syntax entsha yokuchaza uhlobo lomsebenzi "(igama: Umtya, ubudala: Int)-> Bool" okanye "(Intambo, Int)-> Bool" endaweni ka "Umtya-> Int-> Bool".
  • Isivakalisi somsebenzi wotolo ngu "(a, b) -> a + b" endaweni yokuthi "umsebenzi(a, b) buyisela u + b".
  • Ukukhuselwa kwiingxaki ezinxulumene nokusetyenziswa kwamaxabiso e-Null (uphawu lovavanyo, luvulelwe imimandla ethile, iiklasi okanye iipakethe).
  • Igama elithi "ekugqibeleni" leleenkalo zeklasi kunye nezinto eziguquguqukayo zendawo ezingenakuguqulwa. "Eyokugqibela" isenokusetyenziswa ukuchaza imisebenzi ukuthintela ukuba ingagxothwa lilifa kunye neeklasi/imidibaniso engenakuzuzwa.
  • inkxaso Umgangatho we-Unicode wohlobo lwesiseko "Umtya" kuzo zonke iithagethi zokuqokelela ngaphandle kweNeko.
  • Itoliki eyakhelwe-ngaphakathi ibhalwe ngokutsha ukusuka ekuqaleni, ngoku eza phantsi kwegama Vavanya. Enkosi kwitoliki entsha, izikripthi kunye neemacros zibaleka ngokukhawuleza okukhulu. Imo ye-interactive debugging iyaxhaswa.
  • Inkqubo entsha ekujoliswe kuyo yokuhlanganiswa (okujoliswe kuko) Hashlink - i-runtime ephezulu yokusebenza eyenzelwe ngokukodwa i-Haxe, ukuxhasa ukuhlanganiswa kwi-bytecode ye-JIT okanye i-C, inokuhlanganiswa okulula kunye ne-C, kunye nokufikelela kwiintlobo zamanani aphantsi kunye nezikhombisi.
  • Ithagethi entsha ye-JVM - ikuvumela ukuba uvelise i-jvm bytecode ngokutsiba inyathelo lokuhlanganiswa kwekhowudi yeJava ngokongeza iflegi ethi "-D jvm" xa ujolisa kwiJava.
  • Ikhono lokusebenzisa i-inline-deploy kwindawo yokubiza imisebenzi okanye abakhi, nangona bengabhengezwa ngolo hlobo.
  • Ukunokwenzeka kokubandakanywa izandiso ezimileyo xa ubhengeza uhlobo (olufana no "enum") usebenzisa "@:using(path.ToExtension)".
  • Iintlobo ze-abstract ngoku zixhasa uguqulelo luka-"set" lomsebenzisi we-"@:op(ab)" ukuze kulayishwe kwakhona "obj.foo = bar" iintetho.
  • I "for" loop syntax ngoku ixhasa ukuphindaphindwa kwexabiso elingundoqo: "ye (isitshixo => ixabiso kwingqokelela) {}".
  • Inkxaso yokusebenzisa uphawulo olufana ne-xml kwintetho: “var a = ‹hi/›;”. Okwangoku, eli nqaku lifumaneka kuphela xa kusenziwa iimacros kwaye likwinqanaba loyilo.
  • Isivakalisi semimandla ekhethiweyo kubhalo “ogcweleyo” lweentlobo zesakhiwo esingachazwanga ngamagama sithi: “{ var ?f:Int; }" (enye yendlela emfutshane "{ ?f:Int }").
  • Amaxabiso e-Enum ngoku anokuba ngamaxabiso angagqibekanga eempikiswano zomsebenzi: "umsebenzi foo‹T›(ukhetho:Ukhetho‹T› = Akukho)".
  • Igama elithi "enum abstract Name(BasicType) {}" ayisafuni "@:" isimaphambili esikwi "enum".
  • Ukunika amanani ngokuzenzekela kubalo olungabonakaliyo:

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

  • Igama elingundoqo elithi "extern" alisafuni ukusetyenziswa kwesimaphambili "@:".
  • Lususiwe ukhetho "izixhobo Dynamic" ukufikelela kwiindawo zeklasi ngeentambo. Iyafumaneka kwiiklasi zangaphandle okanye ngokuphunyezwa ngohlobo olungabonakaliyo.
  • I-syntax yongezwe "A & B" yohlobo lwe-intersection, okwangoku isebenza kuphela kwizakhiwo ezingachazwanga kunye nohlobo lwemithintelo yepharamitha. Isivakalisi esidala sesithintelo sisusiwe.
  • Ukwenza "iMaphu" engenanto imizekelo iyafumaneka nge-syntax "var map:Map‹Int, String› = [];" iyafana noluhlu.
  • Ulwakhiwo lwedatha olongeziweyo "haxe.ds.ReadOnlyArray".
  • Imethadatha ngoku inokuba nezithuba zamagama (“@:prefix.name function() {…}”). Ngokufanayo neenkcazo: "#ukuba (enye.flag ... #end".
  • Inkqubo entsha yenkonzo yee-IDE ezisetyenziswa kuyo iplagi ye-VSCode.
  • Kuhlaziywe iinkcazelo zangaphandle (zangaphandle) zeWeb APIs kwaye zongezwe ezingekhoyo.

umthombo: opennet.ru

Yongeza izimvo