Ho lokolloa ha puo ea lenaneo Haxe 4.0

Fumaneha tokollo ea lisebelisoa Haxe 4.0, e kenyelletsang lipuo tse ngata tsa boemo bo phahameng ba lenaneo la lebitso le le leng le nang le ho thaepa ka matla, ho kopanya li-cross-compiler le laebrari e tloaelehileng ea mesebetsi. Morero o tšehetsa phetolelo ho C ++, HashLink / C, JavaScript, C #, Java, PHP, Python le Lua, hammoho le ho bokella ho JVM, HashLink / JIT, Flash le Neko bytecode, ka ho fihlella bokhoni ba tlhaho ba sethaleng se seng le se seng se lebisitsoeng. Moqapi oa khoutu ajoa ke tlas'a laesense ea GPLv2, le laeborari e tloaelehileng le mochini o sebetsang o etselitsoeng Haxe neko tlas'a laesense ea MIT.

Puo ke e sekametseng polelong ka ho ngola ka matla. Maikutlo a mananeo a nang le sepheo, a tloaelehileng le a sebetsang a tšehetsoa.
Haxe syntax e haufi le ECMAScript le ea atoloha likarolo tsa eona tse kang static typing, autotype inference, pattern matching, generics, iterator-based for loops, AST macros, GADT (Generalized Algebraic Data Types), mefuta e sa bonahaleng, mehaho e sa tsejoeng, litlhaloso tse nolofalitsoeng tsa lihlopha, lipolelo tsa pokello ea maemo, ho kopanya metadata masimong. , lihlopha le lipolelo, tlhaloso ea likhoele ('Lebitso la ka ke $lebitso'), mefuta ea mefuta ("New Main‹String›('foo')"), le haholo ho feta.

Tlhahlobo ea sehlopha {
static function main() {
batho ba bang = [
"Elizabeth" => "Lenaneo",
"Joel" => "Moqapi"
];

bakeng sa (lebitso ho batho.keys()) {
var job = batho[lebitso];
trace('$lebitso le etsa $mosebetsi bakeng sa ho iphelisa!');
}
}
}

ka sehloohong boiqapelo Mofuta oa 4.0:

  • Syntax e ncha ea ho hlalosa mofuta oa ts'ebetso "(lebitso: String, lilemo: Int) -> Bool" kapa "(String, Int)-> Bool" sebakeng sa "String-> Int-> Bool".
  • Syntax ea mosebetsi oa motsu ke "(a, b) -> a + b" sebakeng sa "function(a, b) return a + b".
  • Tšireletso khahlano le mathata a amanang le ts'ebeliso ea litekanyetso tsa Null (karolo ea liteko, e lumelletsoeng ka boikhethelo bakeng sa likarolo tse itseng, litlelase kapa liphutheloana).
  • "Qetellong" lentsoe la sehlooho ke la masimo a sehlopha le mefuta e fapaneng ea lehae e ke keng ea fetoha. "final" e ka boela ea sebelisoa ho hlalosa mesebetsi ho thibela hore e se ke ea nkoa e le lefa le bakeng sa lihlopha / li-interfaces tse ke keng tsa futsa.
  • tshehetso Tekanyetso ea Unicode bakeng sa mofuta oa motheo "String" ho lipheo tsohle tsa pokello ntle le Neko.
  • Sefetoleli se hahelletsoeng ka hare se ngotsoe bocha ho tloha qalong, se tlang ka tlasa lebitso Lekola. Ka lebaka la mofetoleli e mocha, mangolo le macros li sebetsa ka potlako haholo. Mokhoa oa ho lokisa liphoso o oa tšehetsoa.
  • Sistimi e ncha ea sepheo sa ho bokella (sepheo) Hashlink - nako ea ts'ebetso e phahameng e etselitsoeng Haxe ka ho khetheha, e tšehetsang pokello ea bytecode bakeng sa JIT kapa C, e na le kopanyo e bonolo le C, hammoho le phihlello ea mefuta e tlase ea linomoro le lintlha.
  • Sepheo se secha sa JVM - se u lumella ho hlahisa jvm bytecode ka ho tlola mohato oa ho bokella khoutu ea Java ka ho eketsa "-D jvm" folakha ha u shebile Java.
  • Bokhoni ba ho inline-deploy sebakeng sa ho bitsa mesebetsi kapa lihahi, leha li sa phatlalatsoe joalo.
  • Monyetla oa ho kenyelletsa static extensions ha o phatlalatsa mofuta (jwalo ka "enum") o sebedisa "@:using(path.ToExtension)".
  • Hona joale mefuta e sa bonahaleng e tšehetsa mofuta oa "set" oa "@:op(ab)" ho kenya mantsoe a reng "obj.foo = bar".
  • The "for" loop syntax e se e ts'ehetsa ho pheta-pheta ha bohlokoa: "bakeng sa (key => boleng bo bokeletsoeng) {}".
  • Tšehetso ea ho sebelisa letšoao la xml-joaloka lipoleloana: "var a = ‹hi/›;". Hajoale, tšobotsi ena e fumaneha feela bakeng sa ho arola ka li-macros mme e maemong a moralo.
  • Syntax bakeng sa likarolo tsa boikhethelo ho "feletseng" ea mefuta e sa tsejoeng ea sebopeho ke: “{ var ?f:Int; }" (e leng mokhoa o mong ho fapana le "{ ?f:Int }").
  • Litekanyetso tsa Enum joale e ka ba boleng ba kamehla bakeng sa likhang tsa tšebetso: "function foo‹T›(khetho:Khetho‹T› = Ha ho letho)".
  • "enum abstract Name(BasicType) {}" syntax ha e sa hloka "@:" prefix in "enum".
  • Linomoro tse iketsang bakeng sa lipalo tse sa bonahaleng:

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

  • Lentsoe la sehlooho la "extern" ha le sa hloka tšebeliso ea "@:" prefix.
  • E tlositse khetho "lisebelisoa Dynamic" ho fihlella likarolo tsa sehlopha ka likhoele. E fumaneha bakeng sa litlelase tsa kantle kapa ka ho kengoa ts'ebetsong ka mofuta o itseng.
  • E kentsoe "A & B" syntax bakeng sa mateano a mefuta, eo hajoale e sebetsang feela ho meaho e sa tsejoeng le lithibelo tsa mofuta oa paramethara. Polelo ea khale ea constraint e tlositsoe.
  • Ho theha maemo a "Mapa" a se nang letho ho fumaneha ka syntax "var map:Map‹Int, String› = [];" e tshoanang le sehlopha.
  • E kentse sebopeho sa data "haxe.ds.ReadOnlyArray".
  • Metadata joale e ka ba le libaka tsa mabitso ("@:prefix.name function() {...}"). Ka mokhoa o ts'oanang le litlhaloso: "#if (some.flag ... #end".
  • Protocol e ncha ea litšebeletso bakeng sa li-IDE tse sebelisoang ho plugin bakeng sa VSCode.
  • Litlhaloso tse nchafalitsoeng (ka ntle) bakeng sa li-API tsa Tepo le tse sieo.

Source: opennet.ru

Eketsa ka tlhaloso