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!');
}
}
}
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.