Programmeerimiskeele Haxe 4.0 väljalase

Saadaval tööriistakomplekti vabastamine Haxe 4.0, mis sisaldab samanimelist mitmeparadigmalist kõrgetasemelist programmeerimiskeelt tugeva tippimisega, ristkompilaatorit ja standardset funktsioonide teeki. Projekt toetab tõlget C++, HashLink/C, JavaScripti, C#, Java, PHP, Python ja Lua keeltesse, samuti kompileerimist JVM-i, HashLink/JIT-i, Flashi ja Neko baitkoodidesse, millel on juurdepääs iga sihtplatvormi natiivsetele võimalustele. Kompilaatori kood jaotatud GPLv2 litsentsi ning Haxe jaoks välja töötatud standardteegi ja virtuaalmasina Neko MIT litsentsi alusel.

Keel on väljendusele orienteeritud tugeva trükkimisega. Toetatakse objektorienteeritud, üldiseid ja funktsionaalseid programmeerimiskontseptsioone.
Haxe süntaks on lähedane ECMAScriptile ja laieneb selle funktsioonid, nagu staatiline tippimine, automaatse tüübi järeldamine, mustrite sobitamine, üldised, iteraatoripõhised tsüklite jaoks, AST-makrod, GADT (generaliseeritud algebralised andmetüübid), abstraktsed tüübid, anonüümsed struktuurid, lihtsustatud massiivi määratlused, tingimuslikud kompileerimisavaldised, metaandmete lisamine väljadele , klassid ja avaldised, stringide interpolatsioon ('Minu nimi on $nimi'), tüübiparameetrid ("uus Main‹String›('foo')") ja palju rohkem.

klass Test {
staatiline funktsioon main() {
vari inimesed = [
"Elizabeth" => "Programmeerimine",
"Joel" => "Disain"
];

for (nimi jaotises people.keys()) {
var töö = inimesed[nimi];
trace('$name teeb $tööd elatise nimel!');
}
}
}

Kõik uuendused versioon 4.0:

  • Uus süntaks funktsioonitüübi "(nimi:String, vanus:Int)->Bool" või "(String, Int)->Bool" määramiseks "String->Int->Bool" asemel.
  • Noolefunktsiooni süntaks on "(a, b) -> a + b" asemel "funktsioon(a, b) tagastab a + b".
  • Kaitse nullväärtuste kasutamisega seotud probleemide eest (eksperimentaalne funktsioon, valikuliselt lubatud teatud väljade, klasside või pakettide jaoks).
  • "Lõplik" märksõna on klassiväljade ja kohalike muutujate jaoks, mis on muutumatud. "lõplikku" saab kasutada ka funktsioonide määratlemiseks, et vältida nende alistamist pärimise teel ja klasside/liideste jaoks, mida ei saa pärida.
  • Toetama Unicode'i standard baastüübi "String" jaoks kõigil koostamise sihtmärkidel, välja arvatud Neko.
  • Sisseehitatud nullist ümber kirjutatud tõlk, mis nüüd kannab nime Hinda. Tänu uuele interpretaatorile töötavad skriptid ja makrod palju kiiremini. Toetatakse interaktiivset silumisrežiimi.
  • Uus koostamise sihtsüsteem (sihtmärk) Hashlink - spetsiaalselt Haxe jaoks loodud suure jõudlusega käituskeskkond, mis toetab kompileerimist baitkoodiks JIT või C jaoks, millel on lihtne integreerimine C-ga, samuti juurdepääs madala taseme numbritüüpidele ja osutitele.
  • Uus JVM-i sihtmärk – võimaldab teil genereerida jvm-baitkoodi, jättes vahele Java koodi koostamise etapi, lisades Java-s sihtimisel lipu "-D jvm".
  • Võimalus funktsioonide või konstruktorite väljakutsumisel reas juurutada, isegi kui need pole sellisena deklareeritud.
  • Kaasamise võimalus staatilised laiendused tüübi (nt "enum") deklareerimisel, kasutades "@:using(path.ToExtension)".
  • Abstraktsed tüübid toetavad nüüd operaatori "@:op(ab)" "set" versiooni avaldiste "obj.foo = bar" uuesti laadimiseks.
  • Silmuse süntaks "for" toetab nüüd võtmeväärtuste iteratsiooni: "for (võti => väärtus kogus) {}".
  • Tugi xml-laadse märgistuse kasutamiseks avaldistes: “var a = ‹hi/›;”. Praegu on see funktsioon saadaval ainult makrodega sõelumiseks ja on projekteerimisetapis.
  • Anonüümsete struktuuritüüpide „täielikus” tähistuses on valikuliste väljade süntaks: „{ var ?f:Int; }" (alternatiiv lühikesele "{ ?f:Int }").
  • Enumväärtused võivad nüüd olla funktsiooniargumentide vaikeväärtused: "function foo‹T›(valik:Option‹T› = Puudub)".
  • Süntaks "enum abstract Name(BasicType) {}" ei nõua enam "enum" eesliidet "@:".
  • Abstraktsete loendite automaatne nummerdamine:

    enum abstract Foo(Int) {
    var A; // 0
    var B; // 1
    }
    enum abstraktne riba(string) {
    var A; // "A"
    var B; // "B"
    }

  • Märksõna "välimine" ei nõua enam eesliite "@:" kasutamist.
  • Eemaldatud valik "tööriistad Dünaamiline", et pääseda klassiväljadele stringide kaudu. Saadaval väliste klasside jaoks või abstraktse tüübi rakendamise kaudu.
  • Lisatud "A & B" süntaks tüübi ristumiskohale, mis praegu kehtib ainult anonüümsete struktuuride ja tüübiparameetrite piirangute kohta. Vana piirangu süntaks on eemaldatud.
  • Tühjade "Map" eksemplaride loomine on saadaval süntaksiga "var map:Map‹Int, String› = [];" sarnane massiiviga.
  • Lisatud andmestruktuur "haxe.ds.ReadOnlyArray".
  • Metaandmetel võivad nüüd olla nimeruumid (“@:prefix.name function() {…}”). Samamoodi definitsioonidega: “#if (mingi.lipp ... #lõpp”.
  • Uus teenindusprotokoll kasutatavate IDE-de jaoks VSCode'i pistikprogramm.
  • Värskendati veebi API-de väliseid määratlusi (välised) ja lisati puuduvad.

Allikas: opennet.ru

Lisa kommentaar