Kuburitswa kwemutauro wechirongwa Haxe 4.0

Inowanikwa toolkit release Haxe 4.0, iyo inosanganisira yakawanda-paradigm yepamusoro-level programming mutauro wezita rimwe chete nekunyora kwakasimba, muchinjika-musanganiswa uye raibhurari yakajairika yemabasa. Iyo purojekiti inotsigira kududzira kuC ++, HashLink/C, JavaScript, C#, Java, PHP, Python uye Lua, pamwe nekubatanidza kuJVM, HashLink/JIT, Flash uye Neko bytecode, nekuwana kugona kwekugona kwepuratifomu yega yega. Compiler kodhi inoparadzirwa ne pasi peGPLv2 rezinesi, uye raibhurari yakajairwa uye muchina chaiwo wakagadzirirwa Haxe neko pasi peMIT rezinesi.

Mutauro ndiwo kutaura-kunakirwa netaipa yakasimba. Zvinangwa-zvinangwa, generic uye zvinoshanda programming concepts zvinotsigirwa.
Haxe syntax iri padyo neECMAScript uye inowedzera maitiro ayo akadai se static typing, autotype inference, pattern matching, generics, iterator-based for looops, AST macros, GADT (Generalized Algebraic Data Types), abstract types, zvimiro zvisingazivikanwe, tsananguro dzakareruka dzakareruka, mataurirwo ekubatanidza, kubatanidza metadata kuminda. , makirasi uye matauriro, tambo kududzira ('Zita rangu $zita'), mhando paramita ("itsva Mainβ€ΉStringβ€Ί('foo')"), uye zvakawanda.

kirasi Muedzo {
static basa guru () {
vanhu vari = [
"Elizabeth" => "Kuronga",
"Joel" => "Gadzira"
];

nokuti (zita muvanhu.keys()) {
var basa = vanhu[zita];
trace('$zita rinoita $basa kuti urarame!');
}
}
}

chikuru zvitsva vhezheni 4.0:

  • New syntax yekutsanangura basa remhando "(zita: String, age:Int)-> Bool" kana "(String, Int)-> Bool" pachinzvimbo che "String-> Int-> Bool".
  • Arrow function syntax ndeye "(a, b) -> a + b" pane kuti "basa (a, b) dzorera a + b".
  • Dziviriro kubva kumatambudziko ane chekuita nekushandiswa kweNull kukosha (yekuyedza chimiro, inogoneswa kune mamwe minda, makirasi kana mapakeji).
  • Izwi rekuti "yekupedzisira" ndere minda yekirasi uye zvimiro zvemuno izvo zvisingachinjike. "yekupedzisira" inogona zvakare kushandiswa kutsanangura mabasa ekudzivirira kuti arege kupfuudzwa nenhaka uye kumakirasi/mainterface asingagone kugarwa nhaka.
  • tsigira Unicode chiyero cheiyo base mhando "String" pane ese ekubatanidza zvinangwa kunze kweNeko.
  • Akavakirwa-mukati muturikiri akanyorwa patsva kubva mukutanga, izvo zvino zvauya pasi pezita Ongorora. Kutenda kune muturikiri mutsva, zvinyorwa uye macros zvinomhanya zvakanyanya. Interactive debugging mode inotsigirwa.
  • Nyowani yakananga sisitimu yekubatanidza (chinangwa) Hashlink -yakanyanya-inoshanda nguva yekumhanya yakagadzirirwa yakanangana neHaxe, inotsigira kuunganidzwa kune bytecode yeJIT kana C, ine nyore kusanganisa neC, pamwe nekuwana yakaderera-nhanho nhamba dzemhando uye anonongedzera.
  • Chitsva cheJVM chinangwa - chinokutendera kuti ugadzire jvm bytecode nekusvetuka iyo Java kodhi yekubatanidza nhanho nekuwedzera iyo "-D jvm" mureza kana wakananga muJava.
  • Iko kugona ku-inline-deploy padanho rekudaidza mabasa kana vagadziri, kunyangwe vasina kuziviswa saizvozvo.
  • Kugona kwekubatanidzwa static extensions paunenge uchizivisa mhando (yakadai se "enum") uchishandisa "@:kushandisa(path.ToExtension)".
  • Abstract types dzava kutsigira "set" vhezheni ye "@:op(a.b)" mushandisi kurodhazve "obj.foo = bar" mataurirwo.
  • Iyo "ye" loop syntax ikozvino inotsigira kiyi-kukosha iteration: "ye (kiyi => kukosha muunganidzwa) {}".
  • Tsigiro yekushandisa xml-like markup muzvirevo: "var a = β€Ήhi/β€Ί;". Parizvino, iyi ficha inongowanikwa chete parsing nema macros uye iri padanho rekugadzira.
  • Mazwi ezvirevo zvendima dzesarudzo mu "full" notation yemhando yezvimiro zvisingazivikanwe ndeiyi: β€œ{var ?f:Int; }" (imwe nzira yepfupi "{ ?f:Int }").
  • Enum values ​​zvino inogona kuve yakasarudzika tsika dzebasa nharo: "basa fooβ€ΉTβ€Ί(sarudzo:Sarudzoβ€ΉTβ€Ί = Hapana)".
  • Iyo "enum abstract Name(BasicType) {}" syntax haichadi "@:" prefix mu "enum".
  • Kunyora otomatiki kwezvinyorwa zvisinganzwisisiki:

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

  • Izwi rekuti "extern" harichadi kushandiswa kwe "@:" prefix.
  • Abvisa sarudzo "zvishandiso Dynamic" kuti uwane nzvimbo dzekirasi kuburikidza netambo. Inowanikwa kumakirasi ekunze kana kuburikidza nekushandiswa neabstract type.
  • Yakawedzera "A & B" syntax yemhando yemharadzano, iyo parizvino inongoshanda kune zvisingazivikanwe zvimiro uye mhando yeparameter zvipingaidzo. Iyo yekare constraint syntax yakabviswa.
  • Kugadzira isina "Mepu" zviitiko zvinowanikwa kuburikidza ne syntax "var mepu:Mepuβ€ΉInt, Stringβ€Ί = [];" zvakafanana nearray.
  • Yakawedzera data chimiro "haxe.ds.ReadOnlyArray".
  • Metadata ikozvino inogona kuve nemazita ("@:prefix.name function() {...}"). Zvakafanana netsanangudzo: "#if (some.flag ... #end".
  • Nyowani sevhisi protocol yemaIDE anoshandiswa mukati plugin yeVSCode.
  • Yakagadziridzwa tsananguro dzekunze (dzekunze) dzeWebhu API uye yakawedzera asipo.

Source: opennet.ru

Voeg