Derxistina zimanê bernamesaziyê Haxe 4.0

Berdeste serbestberdana toolkit Haxe 4.0, ku zimanê bernamesaziya pir-paradîgmaya asta bilind a bi heman navî bi tîpkirina xurt, hevberhevkerek û pirtûkxaneyek standard a fonksiyonan vedihewîne. Proje wergera C++, HashLink/C, JavaScript, C#, Java, PHP, Python û Lua, û hem jî berhevkirina JVM, HashLink/JIT, Flash û Neko bytecode, bi gihîştina kapasîteyên xwemalî yên her platformek armancê piştgirî dike. Koda berhevkar belav kirin ji hêla di bin lîsansa GPLv2 de, û pirtûkxaneyek standard û makîneyek virtual ku ji bo Haxe hatî pêşve xistin neko di bin lîsansa MIT.

Ziman e îfade-oriented bi tîpên xurt. Têgehên bernamesaziya objekt-oriented, gelemperî û fonksiyonel têne piştgirî kirin.
Hevoksaziya Haxe nêzîkî ECMAScript û berfireh dike taybetmendiyên wê yên wekî tîpkirina statîk, înfaza ototîp, hevberdana nimûne, generîk, îterator-based loops, makroyên AST, GADT (Cîpên Daneyên Cebrîkî yên Giştî), celebên razber, strukturên nenas, pênaseyên rêzê yên hêsan, vegotinên berhevkirina şertî, girêdana metadata bi qadan , çîn û biwêjan, navberkirina rêzikan ('Navê min $name ye'), parametreyên binivîsin ("New Main‹String›('foo')"), û gelek zêdetir.

testa dersê {
fonksiyona statîk sereke() {
var mirov = [
"Elizabeth" => "Bernamekirin",
"Joel" => "Design"
];

ji bo (navê di people.keys()) {
var job = kes[nav];
trace('$name ji bo debara xwe $kar dike!');
}
}
}

sereke nûbûnên guhertoya 4.0:

  • Hevoksaziya nû ji bo diyarkirina celebê fonksiyonê "(nav: String, temen:Int)->Bool" an "(String, Int)->Bool" li şûna "String->Int->Bool".
  • Hevoksaziya fonksiyona tîrê "(a, b) -> a + b" li şûna "fonksiyona (a, b) vegerandina a + b" ye.
  • Parastina li dijî pirsgirêkên ku bi karanîna nirxên Null re têkildar in (taybetmendiya ceribandinê, vebijarkî ji bo hin qadan, çîn an pakêtan ve hatî çalak kirin).
  • Peyva sereke ya "dawî" ji bo zeviyên polê û guhêrbarên herêmî yên ku neguhêrbar in e. Her weha "dawî" dikare ji bo danasîna fonksiyonan were bikar anîn da ku pêşî li girtina wan ji mîrasbûnê bigire û ji bo çînên / navgînên ku nayên mîras kirin.
  • alîkarî Standarda Unicode ji bo celebê bingehîn "String" li ser hemî armancên berhevokê ji bilî Neko.
  • Wergêrê çêkirî ji nû ve hatî nivîsandin, ku naha di bin navê de tê Bihadanîn. Bi saya wergêra nû, nivîs û makro pir zûtir dimeşin. Moda verastkirina înteraktîf tê piştgirî kirin.
  • Pergala armanca nû ya ji bo berhevkirinê (armanc) Hashlink - dema xebitandinê ya bi performansa bilind ku bi taybetî ji bo Haxe hatî çêkirin, piştgirî dide berhevkirina bytecode ji bo JIT an C, bi C re entegrasyona hêsan heye, û her weha gihîştina celeb û nîşankerên hejmarî yên asta nizm.
  • Hedefa nû ya JVM - destûrê dide te ku hûn jvm bytecode hilberînin, gava ku di Java-yê de armanc dikin, bi avêtina gavê berhevkirina koda Java-yê bi lê zêdekirina ala "-D jvm" biafirînin.
  • Qabiliyeta ku di nuqteya bangkirina fonksiyonan an çêkeran de binavkirî-dabeşkirin, hetta ku ew weha neyên ragihandin.
  • Îhtîmala tevlêbûnê dirêjkirinên statîk dema ragihandina celebek (wek "enum") bi karanîna "@:using(path.ToExtension)".
  • Cûreyên razber naha guhertoyek "set" ya operatora "@:op(a.b)" piştgirî dikin da ku bêjeyên "obj.foo = bar" ji nû ve bar bike.
  • Hevoksaziya lûkê "ji bo" niha dubarekirina nirx-kilît piştgirî dike: "ji bo (key => nirxa di berhevkirinê de) {}".
  • Piştgiriya ji bo karanîna nîşankirina xml-mîna di bêjeyan de: "var a = ‹hi/›;". Heya nuha, ev taybetmendî tenê ji bo parkirina bi makroyan heye û di qonaxa sêwiranê de ye.
  • Hevoksaziya qadên bijarte yên di nîşana "temam" a cureyên avahiyeke nenas de ev e: "{ var ?f:Int; }" (alternatîfek ji bo kurteya "{ ?f:Int }").
  • Nirxên Enumê naha dikarin ji bo argumanên fonksiyonê bibin nirxên xwerû: "function foo‹T›(vebijark: Vebijêrk‹T› = Tune)".
  • Hevoksaziya "enum abstract Name(BasicType) {}" êdî di "enum" de pêşgira "@:" hewce nake.
  • Jimarkirina otomatîk ji bo hejmartinên razber:

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

  • Peyva sereke ya "derve" êdî hewce nake ku pêşgira "@:" bikar bîne.
  • Vebijêrk rakirin "pêkanîn dike Dînamîk" ku bi riya rêzan bigihîje zeviyên polê. Ji bo dersên derveyî an bi pêkanîna bi celebek abstrakt peyda dibe.
  • Hevoksaziya "A & B" ji bo hevberdana tîpan hat zêdekirin, ku naha tenê ji bo strukturên nenas û sînorkirinên parametreyê yên cureyê derbas dibe. Hevoksaziya astengiya kevin hat rakirin.
  • Çêkirina mînakên "Nexşeyê" yên vala bi rêya hevoksaziya "var map:Map‹Int, String› = [];" dişibin array.
  • Struktura daneyê "haxe.ds.ReadOnlyArray" lê zêde kir.
  • Metadata naha dikare cîhên navan hebe ("@:prefix.name function() {…}"). Bi heman awayî bi pênaseyan: "#eger (hinek.ala ... #dawî".
  • Protokola karûbarê nû ya ji bo IDE-yên ku tê de têne bikar anîn pêvek ji bo VSCode.
  • Ji bo API-yên Web-ê pênaseyên derveyî (derve) nûve kirin û yên winda lê zêde kirin.

Source: opennet.ru

Add a comment