Programmeerimiskeele Haxe 4.0 vÀljalase

Saadaval vahendite vĂ€ljaanne Haxe 4.0, mis hĂ”lmab samanimelist mitme paradigma kĂ”rgetasemelist programmeerimiskeelt, range tĂŒĂŒbistamisega, ristkompilaatorit ja standardsete funktsioonide raamatukogu. Projekt toetab kompilatsiooni C++, HashLink/C, JavaScript, C#, Java, PHP, Python ja Lua keeles, samuti baidikoodi kompileerimist JVM-i, HashLink/JIT, Flash ja Neko jaoks, pakkudes juurdepÀÀsu iga sihtplatvormi kohalikele vĂ”imalustele. Kompilaatori kood GNU Üldine Avaliku litsentsi alusel. on litsentseeritud GPLv2 all, samas kui standardraamatukogu ja arendatav Haxe virtuaalmasin Neko on MIT litsentsi all.

Keel on expression-orienteeritud oni range tĂŒĂŒbistamisega. Toetatakse objekti-orienteritud, ĂŒldiste ja funktsionaalsete programmeerimise paradigmasid.
Haxe sĂŒntaks on sarnane ECMAScriptiga ja laiendab oma tunnustega, nagu staatiline tĂŒĂŒbistamine, tĂŒĂŒpide automaatne tuletamine, musternĂ€idetes sobitamine, generics, iteraatoritel pĂ”hinev 'for' tsĂŒkkel, AST-makrod, GADT (ĂŒldistatud algebralised andmetĂŒĂŒbid), abstraktsed tĂŒĂŒbid, anonĂŒĂŒmsed struktuurid, lihtsustatud massiivide mÀÀratlemine, tingimuslikud kompileerimiskĂ€sud, metaandmete lisamine vĂ€ljadele, klassidele ja vĂ€ljenditele, stringide interpolatsioon ('Minu nimi on $name'), tĂŒĂŒbi argumendid ('new Mainâ€čStringâ€ș('foo')') ja palju muud.

class Test {
static function main() {
var inimesed = [
«Elizabeth» => «Programmeerimine»,
«Joel» => «Disain»
];

for (nimi in inimesed.keys()) {
var amet = inimesed[nimi];
trace(‘$name teenib $job’);
}
}
}

Peamised uuendused versioon 4.0:

  • Uus sĂŒntaks funktsioonide tĂŒĂŒbi mÀÀramiseks „(name:String, age:Int)->Bool“ vĂ”i „(String, Int)->Bool“ asemel „String->Int->Bool“.
  • Noolefunktsioonide sĂŒntaks „(a, b) -> a + b“ asemel „function(a, b) return a + b“.
  • Kaitse Null vÀÀrtuste kasutamisega seotud probleemide eest (eksperimentaalne funktsioon, mida saab soovi korral aktiveerida teatud vĂ€ljade, klasside vĂ”i pakettide jaoks).
  • Muutumatu klassivĂ€ljade ja kohalike muutujate vĂ”tmesĂ”na „final“. „Final“ vĂ”ib samuti olla funktsioonide mÀÀramiseks, et keelata nende ĂŒlekirjutamine pĂ€rimise kĂ€igus, ja klasside/interfeerside mÀÀramiseks, mida ei saa pĂ€rida.
  • Toetamine Unicode standard pĂ”hiliigi „String“ jaoks kĂ”ikide kompileerimise sihtide, vĂ€lja arvatud Neko.
  • nullist ĂŒmberkirjutatud sisseehitatud tĂ”lgendaja, mis toimetatakse nĂŒĂŒd nime all Eval. Uue tĂ”lgendaja tĂ”ttu toimivad skriptid ja makrod tunduvalt kiiremini. Toetatakse interaktiivse silumise reĆŸiimi.
  • Uus sihtsĂŒsteem kompileerimiseks (target) Hashlink — kĂ”rgsoorituslik runtime, mis on loodud spetsiaalselt Haxe jaoks, toetab kompilatsiooni bytecode'iks JIT-i vĂ”i C-ks, pakkudes lihtsat integreerimist C-iga ja ligipÀÀsu madala taseme numbrilistele tĂŒĂŒpidele ja viidetele.
  • Uus JVM sihikeskkond — vĂ”imaldab genereerida jvm bytecode'i, vahele jĂ€tmata Java-koodi kompileerimise etappi, kui lisada sihtimise kĂ€igus lipp „-D jvm“.
  • VĂ”ime inline-moodulis (inline deployment) kohtades, kus funktsioonide vĂ”i konstruktorite kutsumise korral, isegi kui need pole nĂ”nda vĂ€lja kuulutatud.
  • VĂ”ime kaasata staatilisi laiendusi tĂŒĂŒbi (nĂ€iteks „enum”) kuulutamise ajal, kasutades „@:using(path.ToExtension)“.
  • Abstraktsed tĂŒĂŒbid toetavad nĂŒĂŒd „set“-versiooni operaatorist „@:op(a.b)“, et ĂŒle laadida vĂ€ljendid „obj.foo = bar“.
  • TsĂŒkli „for“ sĂŒntaks toetab nĂŒĂŒd „vĂ”ti-vÀÀrtus“-iteratsiooni: „for (key => value in collection) {}“.
  • Toetatud on xml-taolise sĂŒntaksi kasutamine vĂ€ljendites: „var a = â€čhi/â€ș;“. Praegu on see vĂ”imalus saadaval ainult makrode analĂŒĂŒsimiseks ja on disainimise etapis.
  • SĂŒntaks valikuliste vĂ€ljade jaoks anonĂŒĂŒmses struktuuris „tĂ€ielikus” nĂ€idises: „{ var ?f:Int; }“ (alternatiiv lĂŒhikesele „{ ?f:Int }“).
  • Enumeratsioonide vÀÀrtused vĂ”ivad nĂŒĂŒd olla vaikevÀÀrtused funktsiooni argumentide jaoks: „function fooâ€čTâ€ș(option:Optionâ€čTâ€ș = None)”.
  • SĂŒntaks „enum abstract Name(BasicType) {}” ei nĂ”ua enam „@:„ eelprefiksi „enum” puhul.
  • Autonumereerimine abstraktsetele enumeratsioonidele:

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

  • MĂ€rksĂ”na „extern” ei nĂ”ua enam „@:„ eelprefiksi kasutamist.
  • Eemaldatud on vĂ”imalus „implements Dynamic” klassi vĂ€ljadele juurde pÀÀsemiseks stringide kaudu. Saadaval extern-klasside jaoks vĂ”i abstraktse tĂŒĂŒbi kaudu.
  • Lisatud sĂŒntaks „A & B” tĂŒĂŒpide ristumise jaoks, mis kehtib hetkel ainult anoniimsete struktuuride ja tĂŒĂŒpide piirangute jaoks. Vana piirangute sĂŒntaks on eemaldatud.
  • TĂŒhi „Map” eksemplaride loomine on nĂŒĂŒd saadaval sĂŒntaksiga „var map:Mapâ€čInt, Stringâ€ș = [];” sarnaselt massiivile.
  • Lisatud andmestruktuur „haxe.ds.ReadOnlyArray”.
  • Metaandmed vĂ”ivad nĂŒĂŒd omada nimiruume („@:prefix.name function() {
}”). Samuti mÀÀratlemiste puhul: „#if (some.flag 
 #end”.
  • Uus teenuste protokoll IDE-de jaoks, mida kasutatakse VSCode'i plugina.
  • TĂ€iustatud on vĂ€liseid mÀÀratlusi (extern) Web API-de jaoks ja lisatud puuduvad mÀÀratlused.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster