vahendite vĂ€ljaanne , 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 on litsentseeritud GPLv2 all, samas kui standardraamatukogu ja arendatav Haxe virtuaalmasin on MIT litsentsi all.
Keel on oni range tĂŒĂŒbistamisega. Toetatakse objekti-orienteritud, ĂŒldiste ja funktsionaalsete programmeerimise paradigmasid.
Haxe sĂŒntaks on sarnane ECMAScriptiga ja 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 .
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 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.
- 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 . Uue tĂ”lgendaja tĂ”ttu toimivad skriptid ja makrod tunduvalt kiiremini. Toetatakse interaktiivse silumise reĆŸiimi.
- Uus sihtsĂŒsteem kompileerimiseks (target) â 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 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 .
- TÀiustatud on vÀliseid mÀÀratlusi (extern) Web API-de jaoks ja lisatud puuduvad mÀÀratlused.
Allikas: opennet.ru
