Tso tawm cov lus programming Haxe 4.0

Muaj toolkit tso tawm Xaus 4.0, uas suav nrog ntau lub ntsiab lus siab-theem programming lus ntawm tib lub npe nrog kev ntaus ntawv muaj zog, cross-compiler thiab lub tsev qiv ntawv qauv ntawm kev ua haujlwm. Lub phiaj xwm txhawb kev txhais lus rau C ++, HashLink / C, JavaScript, C #, Java, PHP, Python thiab Lua, nrog rau kev muab tso ua ke rau JVM, HashLink / JIT, Flash thiab Neko bytecode, nrog rau kev nkag mus rau cov peev txheej ntawm txhua lub hom phiaj. Compiler code faib los ntawm raws li daim ntawv tso cai GPLv2, thiab lub tsev qiv ntawv txheem thiab lub tshuab virtual tsim rau Haxe neko ib nyob rau hauv MIT daim ntawv tso cai.

Lus yog qhia-oriented nrog kev ntaus ntawv muaj zog. Object-oriented, generic thiab functional programming tswvyim tau txais kev txhawb nqa.
Haxe syntax yog ze rau ECMAScript thiab nthuav nws cov yam ntxwv xws li static typing, autotype inference, pattern matching, generics, iterator-based for loops, AST macros, GADT (Generalized Algebraic Data Types), abstract types, anonymous structures, simplified array definitions, conditional compilation expressions, attaching metadata to fields. , cov chav kawm thiab cov kab lus, txoj hlua interpolation ('Kuv lub npe yog $name'), hom tsis ("tshiab Mainβ€ΉStringβ€Ί('foo')"), thiab ntau ntxiv.

Xeem chav kawm {
static muaj nuj nqi main() {
var neeg = [
"Elizabeth" => "Programming",
"Joel" => "Tsim"
];

rau (npe hauv people.keys()) {
var job = people[name];
trace('$name does $job for a living!');
}
}
}

ntsiab kev tsim kho tshiab version 4.0:

  • Tshiab syntax rau kev qhia hom kev ua haujlwm "(lub npe: hlua, hnub nyoog: Int)-> Bool" lossis "(String, Int)->Bool" tsis yog "String-> Int->Bool".
  • Arrow function syntax yog "(a, b) -> a + b" es tsis txhob "function(a, b) return a + b".
  • Kev tiv thaiv cov teeb meem cuam tshuam nrog kev siv Null qhov tseem ceeb (kev sim ua haujlwm, xaiv tau qhib rau qee thaj chaw, chav kawm lossis pob khoom).
  • Lo lus "kawg" lo lus tseem ceeb yog rau cov chav kawm thiab cov kev hloov hauv zos uas hloov tsis tau. "qhov kawg" kuj tuaj yeem siv los txhais cov haujlwm los tiv thaiv lawv los ntawm kev cuam tshuam los ntawm kev qub txeeg qub teg thiab rau cov chav kawm / qhov cuam tshuam uas tsis tuaj yeem tau txais qub txeeg qub teg.
  • kev pab txhawb nqa Unicode tus qauv rau lub hauv paus hom "String" ntawm txhua lub hom phiaj sib sau tsuas yog Neko.
  • Built-in tus neeg txhais lus rov sau dua los ntawm kos, uas tam sim no los ntawm lub npe Ntsuam xyuas. Ua tsaug rau tus neeg txhais lus tshiab, cov ntawv sau thiab macros khiav nrawm dua. Kev sib tham sib debugging hom yog txaus siab.
  • Lub hom phiaj tshiab rau kev sib sau ua ke (lub hom phiaj) Hashlink - lub sijhawm ua haujlwm siab tau tsim tshwj xeeb rau Haxe, txhawb kev muab tso ua ke rau bytecode rau JIT lossis C, muaj kev sib koom ua ke yooj yim nrog C, nrog rau kev nkag mus rau cov lej qis thiab cov taw qhia.
  • Lub hom phiaj JVM tshiab - tso cai rau koj los tsim jvm bytecode los ntawm kev hla Java code compilation kauj ruam los ntawm kev ntxiv tus chij "-D jvm" thaum lub hom phiaj hauv Java.
  • Lub peev xwm rau inline-deploy ntawm lub point ntawm hu ua functions los yog constructors, txawm tias lawv tsis tau tshaj tawm hais tias xws li.
  • Muaj peev xwm suav nrog static extensions thaum tshaj tawm ib hom (xws li "enum") siv "@: siv (path.ToExtension)".
  • Cov hom kev paub daws teeb meem tam sim no txhawb nqa "teeb" version ntawm "@:op(a.b)" tus neeg teb xov tooj rov qab "obj.foo = bar" kab lus.
  • Lub "rau" lub voj syntax tam sim no txhawb qhov tseem ceeb-tus nqi iteration: "rau (qhov tseem ceeb => tus nqi hauv kev sau) {}".
  • Txhawb kev siv xml-zoo li kos npe hauv kab lus: "var a = β€Ήhi/β€Ί;". Txog tam sim no, qhov no tsuas yog muaj rau kev txheeb xyuas nrog macros thiab nyob rau theem tsim.
  • Cov syntax rau kev xaiv teb nyob rau hauv "tag nrho" cov cim ntawm cov qauv tsis qhia npe yog: β€œ{ var ?f:Int; }" (ib txoj hauv kev luv luv "{?f:Int }").
  • Enum qhov tseem ceeb tam sim no tuaj yeem yog qhov tseem ceeb rau kev ua haujlwm sib cav: "function fooβ€ΉTβ€Ί(option:Optionβ€ΉTβ€Ί = Tsis muaj)".
  • Lub "enum abstract Name(BasicType) {}" syntax tsis tas yuav tsum muaj "@:" prefix hauv "enum".
  • Auto-numbering rau abstract enumerations:

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

  • Lo lus tseem ceeb "extern" tsis tas yuav tsum siv lub "@:" ua ntej.
  • Tshem tawm qhov kev xaiv "siv Dynamic" nkag mus rau hauv chav kawm teb ntawm cov hlua. Muaj rau cov chav kawm sab nraud lossis los ntawm kev siv los ntawm hom kev paub daws teeb meem.
  • Ntxiv "A & B" syntax rau hom kev sib tshuam, uas tam sim no tsuas yog siv rau cov qauv tsis qhia npe thiab hom kev txwv. Cov qub kev txwv syntax tau raug tshem tawm.
  • Tsim qhov khoob "Map" piv txwv yog muaj nyob rau ntawm lub syntax "var map: Mapβ€ΉInt, Stringβ€Ί = [];" zoo ib yam li array.
  • Ntxiv cov ntaub ntawv qauv "haxe.ds.ReadOnlyArray".
  • Metadata tam sim no muaj peev xwm muaj npe qhov chaw (β€œ@:prefix.name function() {…}”). Ib yam li cov lus txhais: "#if (some.flag ... #end".
  • Cov txheej txheem kev pabcuam tshiab rau IDEs siv hauv plugin rau VSCode.
  • Hloov kho cov ntsiab lus sab nraud (extern) rau Web APIs thiab ntxiv cov uas ploj lawm.

Tau qhov twg los: opennet.ru

Ntxiv ib saib