Programmēšanas valodas Haxe 4.0 izlaišana

Pieejams rīku komplekta izlaišana Haxe 4.0, kas ietver tāda paša nosaukuma daudzparadigmu augsta līmeņa programmēšanas valodu ar spēcīgu rakstīšanu, savstarpēju kompilatoru un standarta funkciju bibliotēku. Projekts atbalsta tulkošanu uz C++, HashLink/C, JavaScript, C#, Java, PHP, Python un Lua, kā arī kompilāciju uz JVM, HashLink/JIT, Flash un Neko baitu kodu, ar piekļuvi katras mērķa platformas vietējām iespējām. Kompilatora kods izplata saskaņā ar GPLv2 licenci un standarta bibliotēku un virtuālo mašīnu, kas izstrādāta priekš Haxe Neko saskaņā ar MIT licenci.

Valoda ir orientēts uz izteiksmi ar spēcīgu rakstīšanu. Tiek atbalstītas uz objektu orientētas, vispārīgas un funkcionālas programmēšanas koncepcijas.
Haxe sintakse ir tuvu ECMAScript un izplešas tās funkcijas, piemēram, statiskā rakstīšana, automātiskā tipa secinājumi, modeļu saskaņošana, vispārīgie dati, uz iteratoriem balstītas cilpas, AST makro, GADT (vispārinātie algebrisko datu tipi), abstraktie veidi, anonīmas struktūras, vienkāršotas masīvu definīcijas, nosacījuma kompilācijas izteiksmes, metadatu pievienošana laukiem , klases un izteiksmes, virkņu interpolācija ('Mans vārds ir $name'), tipa parametri ("new Main‹String›('foo')") un daudz vairāk.

klases ieskaite {
statiskā funkcija main() {
dažādi cilvēki = [
"Elizabeth" => "Programmēšana",
"Joel" => "Dizains"
];

for (vārds sadaļā people.keys()) {
var darbs = cilvēki [vārds];
trace('$name dara $darbu iztikai!');
}
}
}

Galvenais jauninājumiem versija 4.0:

  • Jauna sintakse funkcijas veida "(nosaukums:String, vecums:Int)->Bool" vai "(String, Int)->Bool" norādīšanai, nevis "String->Int->Bool".
  • Bultiņas funkcijas sintakse ir "(a, b) -> a + b", nevis "funkcija(a, b) atgriež a + b".
  • Aizsardzība pret problēmām, kas saistītas ar Null vērtību izmantošanu (eksperimentāla funkcija, pēc izvēles iespējota noteiktiem laukiem, klasēm vai pakotnēm).
  • "Galīgais" atslēgvārds ir klases laukiem un vietējiem mainīgajiem, kas ir nemainīgi. "final" var izmantot arī, lai definētu funkcijas, lai novērstu to ignorēšanu ar mantošanu un klasēm/saskarnēm, kuras nevar mantot.
  • atbalsts Unikoda standarts bāzes tipam "String" visiem kompilācijas mērķiem, izņemot Neko.
  • Iebūvēts no jauna pārrakstīts tulks, kas tagad nāk ar nosaukumu Novērtēt. Pateicoties jaunajam tulkam, skripti un makro darbojas daudz ātrāk. Tiek atbalstīts interaktīvais atkļūdošanas režīms.
  • Jauna kompilācijas mērķa sistēma (mērķis) Hashlink - augstas veiktspējas izpildlaiks, kas īpaši izstrādāts Haxe, atbalsta kompilāciju baitkodā JIT vai C, ir viegli integrējams ar C, kā arī piekļuve zema līmeņa ciparu tipiem un rādītājiem.
  • Jauns JVM mērķis — ļauj ģenerēt jvm baitu kodu, izlaižot Java koda kompilācijas darbību, pievienojot karodziņu "-D jvm", kad mērķauditorija tiek atlasīta Java.
  • Iespēja iekļaut izvietošanu funkciju vai konstruktoru izsaukšanas brīdī, pat ja tie nav deklarēti kā tādi.
  • Iekļaušanas iespēja statiski paplašinājumi deklarējot veidu (piemēram, "enum"), izmantojot "@:using(path.ToExtension)".
  • Abstraktie veidi tagad atbalsta operatora "@:op(ab)" "set" versiju, lai atkārtoti ielādētu "obj.foo = bar" izteiksmes.
  • Cilpas "for" sintakse tagad atbalsta atslēgas vērtību iterāciju: "for (key => vērtība kolekcijā) {}".
  • Atbalsts xml līdzīgu marķējumu izmantošanai izteiksmēs: “var a = ‹hi/›;”. Pagaidām šī funkcija ir pieejama tikai parsēšanai ar makro un ir izstrādes stadijā.
  • Neobligāto lauku sintakse anonīmo struktūru tipu “pilnajā” apzīmējumā ir šāda: “{ var ?f:Int; }" (alternatīva īsajam "{ ?f:Int }").
  • Enum vērtības tagad var būt noklusējuma vērtības funkciju argumentiem: "funkcija foo‹T› (opcija: Opcija‹T› = Nav)".
  • Sintaksei "enum abstract Name(BasicType) {}" laukā "enum" vairs nav nepieciešams prefikss "@:".
  • Automātiskā numerācija abstraktiem uzskaitījumiem:

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

  • Atslēgvārdam "ārējais" vairs nav jāizmanto prefikss "@:".
  • Noņemta opcija "darbarīki Dynamic", lai piekļūtu klases laukiem, izmantojot virknes. Pieejams ārējām klasēm vai īstenojot abstraktā veidā.
  • Pievienota "A un B" sintakse tipa krustojumam, kas pašlaik attiecas tikai uz anonīmām struktūrām un tipa parametru ierobežojumiem. Vecā ierobežojuma sintakse ir noņemta.
  • Tukšu "Map" gadījumu izveide ir pieejama, izmantojot sintaksi "var map:Map‹Int, String› = [];" līdzīgs masīvam.
  • Pievienota datu struktūra "haxe.ds.ReadOnlyArray".
  • Tagad metadatos var būt nosaukumvietas (“@:prefix.name function() {…}”). Līdzīgi ar definīcijām: “#if (some.flag ... #end”.
  • Jauns pakalpojumu protokols izmantotajiem IDE VSCode spraudnis.
  • Atjauninātas ārējās definīcijas (ārējās) tīmekļa API un pievienotas trūkstošās definīcijas.

Avots: opennet.ru

Pievieno komentāru