Kutulutsidwa kwa chilankhulo cha pulogalamu Haxe 4.0

Ipezeka kumasulidwa kwa zida Hax 4.0, yomwe imaphatikizapo chinenero cha mapulogalamu apamwamba a paradigm apamwamba a dzina lomwelo ndi kulemba mwamphamvu, cross compiler ndi laibulale yokhazikika ya ntchito. Pulojekitiyi imathandizira kumasulira kwa C ++, HashLink/C, JavaScript, C#, Java, PHP, Python ndi Lua, komanso kuphatikiza ku JVM, HashLink/JIT, Flash ndi Neko bytecode, ndi mwayi wofikira kuzomwe zikuchitika papulatifomu iliyonse. Compiler kodi wogawidwa ndi pansi pa laisensi ya GPLv2, ndi laibulale yokhazikika ndi makina enieni opangidwira Haxe neko pansi pa layisensi ya MIT.

Chilankhulo ndi kufotokoza ndi kulemba mwamphamvu. Malingaliro okhazikika pazifukwa, achibadwa komanso ogwirira ntchito amathandizidwa.
Haxe syntax ili pafupi ndi ECMAScript ndi amakula mawonekedwe ake monga static typing, autotype inference, pattern matching, generics, iterator-based for looops, AST macros, GADT (Generalized Algebraic Data Types), mitundu yosadziwika, mawonekedwe osadziwika, matanthauzo osavuta, mawu ophatikizira ogwirizana, kuyika metadata kumadera. , makalasi ndi mawu, kumasulira kwa zingwe ('Dzina langa ndi $name'), mtundu wa magawo ("New Main‹String›('foo')"), ndi zambiri.

Mayeso a kalasi {
static function main () {
anthu = [
"Elizabeth" => "Mapulogalamu",
"Joel" => "Kupanga"
];

kwa (dzina mu people.keys()) {
var job = anthu[dzina];
trace('$name imagwira ntchito kuti mupeze ndalama!');
}
}
}

waukulu zatsopano Mtundu wa 4.0:

  • Mawu atsopano ofotokozera mtundu wa ntchito "(dzina:Chingwe, zaka:Int)-> Bool" kapena "(String, Int)-> Bool" m'malo mwa "String-> Int-> Bool".
  • Kalembedwe ka ntchito ya muvi ndi "(a, b) -> a + b" m'malo mwa "ntchito(a, b) bweretsani + b".
  • Chitetezo kumavuto okhudzana ndi kugwiritsa ntchito Null values ​​(zoyeserera, zomwe zimaperekedwa mwakufuna kwa magawo ena, makalasi kapena phukusi).
  • Mawu ofunikira "omaliza" ndi a magawo amkalasi ndi zosintha zam'deralo zomwe sizisintha. "zomaliza" zitha kugwiritsidwanso ntchito kutanthauzira ntchito kuti zisasokonezedwe ndi cholowa komanso makalasi/mawonekedwe omwe sangathe kutengera cholowa.
  • thandizo Muyezo wa Unicode wamtundu woyambira "String" pazolinga zonse zophatikiza kupatula Neko.
  • Womasulira womangidwa-mkati wolembedwanso kuchokera poyambira, yemwe tsopano akubwera pansi pa dzina Unikani. Chifukwa cha womasulira watsopano, zolemba ndi macros zimayenda mofulumira kwambiri. Interactive debugging mode imathandizidwa.
  • Njira yatsopano yopangira zopangira (chandamale) Hashlink - nthawi yothamanga kwambiri yopangidwira Haxe, yothandizira kuphatikizika kwa bytecode ya JIT kapena C, imakhala yosavuta kuphatikiza ndi C, komanso mwayi wopeza mitundu yotsika ya manambala ndi zolozera.
  • Chandamale chatsopano cha JVM - chimakupatsani mwayi wopanga jvm bytecode podumpha gawo la Java code powonjezera "-D jvm" mbendera mukamalunjika ku Java.
  • Kutha kuyika-inline-deploy poyitanira ntchito kapena omanga, ngakhale sananenedwe motero.
  • Kuthekera kwa kuphatikiza static zowonjezera polengeza mtundu (monga "enum") pogwiritsa ntchito "@:using(path.ToExtension)".
  • Mitundu yodziwika tsopano imathandizira mtundu wa "set" wa "@:op(a.b)" kuti mutsegulenso mawu akuti "obj.foo = bar".
  • Mawu akuti "for" loop syntax tsopano amathandizira kubwereza kwamtengo wapatali: "kwa (key => mtengo wosonkhanitsa) {}".
  • Kuthandizira kugwiritsa ntchito chizindikiro cha xml m'mawu: "var a = ‹hi/›;". Pakadali pano, izi zimangopezeka kuti zitha kugawidwa ndi ma macros ndipo zili pagawo lopanga.
  • Mauthenga a magawo osankhidwa mwamawu oti "athunthu" amitundu yosadziwika ndi: "{ var ?f:Int; }" (m'malo mwachidule cha "{ ?f:Int }").
  • Makhalidwe a Enum tsopano akhoza kukhala okhazikika pazokangana zantchito: "function foo‹T›(option:Option‹T› = None)".
  • Mawu akuti "enum abstract Name(BasicType) {}" sintax sakufunikanso "@:" prefix mu "enum".
  • Manambala odziyimira pawokha pamawerengero osamveka:

    enum abstract Foo (Int) {
    dzina A; 0//
    mtundu B; // 1
    }
    enum abstract Bar (Chingwe) {
    dzina A; // "A"
    mtundu B; // "B"
    }

  • Mawu osakira "extern" sakufunikanso kugwiritsa ntchito "@:" prefix.
  • Anachotsa njira "zida Dynamic" kuti mupeze magawo amakalasi kudzera pa zingwe. Imapezeka m'makalasi akunja kapena kukhazikitsidwa ndi mtundu wamba.
  • Mawu ophatikizika a "A & B" a mphambano yamtundu, yomwe pano ikungogwira ntchito kuzinthu zosadziwika komanso zoletsa zamtundu. Mawu akale oletsa achotsedwa.
  • Kupanga zochitika za "Mapu" zopanda kanthu kumapezeka kudzera mu mawu akuti "var map:Map‹Int, String› = [];" zofanana ndi gulu.
  • Adawonjezera mawonekedwe a data "haxe.ds.ReadOnlyArray".
  • Metadata tsopano ikhoza kukhala ndi malo a mayina ("@:prefix.name function() {...}"). Mofananamo ndi matanthauzo: "#if (some.flag ... #end".
  • Protocol yatsopano yama IDE yomwe imagwiritsidwa ntchito pulogalamu yowonjezera kwa VSCode.
  • Tasintha matanthauzidwe akunja (akunja) a ma API a pa Webusaiti ndikuwonjezera omwe akusowa.

Source: opennet.ru

Kuwonjezera ndemanga