рднрд╛рд╖рд╛ рдЖрд╣реЗ
Haxe рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ ECMAScript рдЪреНрдпрд╛ рдЬрд╡рд│ рдЖрд╣реЗ рдЖрдгрд┐
рд╡рд░реНрдЧ рдЪрд╛рдЪрдгреА {
рд╕реНрдерд┐рд░ рдХрд╛рд░реНрдп рдореБрдЦреНрдп() {
var рд▓реЛрдХ = [
"рдПрд▓рд┐рдЭрд╛рдмреЗрде" => "рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ",
"рдЬреЛрдПрд▓" => "рдбрд┐рдЭрд╛рдЗрди"
];
рд╕рд╛рдареА (people.keys()) {
var рдиреЛрдХрд░реА = рд▓реЛрдХ [рдирд╛рд╡];
рдЯреНрд░реЗрд╕('$рдирд╛рд╡ рдЬрдЧрдгреНрдпрд╛рд╕рд╛рдареА $рдиреЛрдХрд░реА рдХрд░рддреЗ!');
}
}
}
рдореБрдЦреНрдп
- "рд╕реНрдЯреНрд░рд┐рдВрдЧ->рдЗрдВрдЯ->рдмреВрд▓" рдРрд╡рдЬреА рдлрдВрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ "(рдирд╛рд╡:рд╕реНрдЯреНрд░рд┐рдВрдЧ, рд╡рдп:рдЗрдВрдЯ)->рдмреВрд▓" рдХрд┐рдВрд╡рд╛ "(рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдЗрдВрдЯ)->рдмреВрд▓" рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирд╡реАрди рд╡рд╛рдХреНрдпрд░рдЪрдирд╛.
- рдмрд╛рдг рдлрдВрдХреНрд╢рди рд╕рд┐рдВрдЯреЕрдХреНрд╕ "(a, b) -> a + b" рдРрд╡рдЬреА "function(a, b) return a + b" рдЖрд╣реЗ.
- рд╢реВрдиреНрдп рдореВрд▓реНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛рдВрдкрд╛рд╕реВрди рд╕рдВрд░рдХреНрд╖рдг (рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлреАрд▓реНрдб, рд╡рд░реНрдЧ рдХрд┐рдВрд╡рд╛ рдкреЕрдХреЗрдЬреЗрд╕рд╕рд╛рдареА рд╡реИрдХрд▓реНрдкрд┐рдХрд░рд┐рддреНрдпрд╛ рд╕рдХреНрд╖рдо рдХреЗрд▓реЗрд▓реЗ).
- "рдЕрдВрддрд┐рдо" рдХреАрд╡рд░реНрдб рдХреНрд▓рд╛рд╕ рдлреАрд▓реНрдб рдЖрдгрд┐ рд╕реНрдерд╛рдирд┐рдХ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рд╕рд╛рдареА рдЖрд╣реЗ рдЬреЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЖрд╣реЗрдд. "рдЕрдВрддрд┐рдо" рдЪрд╛ рд╡рд╛рдкрд░ рдлрдВрдХреНрд╢рдиреНрд╕рдирд╛ рдЗрдирд╣реЗрд░рд┐рдЯрдиреНрд╕рджреНрд╡рд╛рд░реЗ рдЕрдзрд┐рд▓рд┐рдЦрд┐рдд рд╣реЛрдгреНрдпрд╛рдкрд╛рд╕реВрди рд░реЛрдЦрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд╡рд░реНрдЧ/рдЗрдВрдЯрд░рдлреЗрд╕рд╕рд╛рдареА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреЗрдЦреАрд▓ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ рдЬреНрдпрд╛рдВрдирд╛ рд╡рд╛рд░рд╕рд╛ рдорд┐рд│реВ рд╢рдХрдд рдирд╛рд╣реА.
-
рдЖрдзрд╛рд░ рдиреЗрдХреЛ рд╡рдЧрд│рддрд╛ рд╕рд░реНрд╡ рд╕рдВрдХрд▓рди рд▓рдХреНрд╖реНрдпрд╛рдВрд╡рд░ рдмреЗрд╕ рдкреНрд░рдХрд╛рд░ "рд╕реНрдЯреНрд░рд┐рдВрдЧ" рд╕рд╛рдареА рдпреБрдирд┐рдХреЛрдб рдорд╛рдирдХ. - рдмрд┐рд▓реНрдЯ-рдЗрди рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ рд╕реНрдХреНрд░реЕрдЪрдордзреВрди рдкреБрдиреНрд╣рд╛ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛, рдЬреЛ рдЖрддрд╛ рдирд╛рд╡рд╛рдЦрд╛рд▓реА рдпреЗрддреЛ
рдЗрд╡реНрд╣рд▓ . рдирд╡реАрди рджреБрднрд╛рд╖реНрдпрд╛рдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдгрд┐ рдореЕрдХреНрд░реЛ рдЦреВрдк рд╡реЗрдЧрд╛рдиреЗ рдЪрд╛рд▓рддрд╛рдд. рдкрд░рд╕реНрдкрд░ рдбреАрдмрдЧрд┐рдВрдЧ рдореЛрдб рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗ. - рд╕рдВрдХрд▓рдирд╛рд╕рд╛рдареА рдирд╡реАрди рд▓рдХреНрд╖реНрдп рдкреНрд░рдгрд╛рд▓реА (рд▓рдХреНрд╖реНрдп)
рд╣реЕрд╢рд▓рд┐рдВрдХ - рд╡рд┐рд╢реЗрд╖рдд: Haxe рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓рд╛ рдЙрдЪреНрдЪ-рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд░рдирдЯрд╛рдЗрдо, JIT рдХрд┐рдВрд╡рд╛ C рд╕рд╛рдареА рдмрд╛рдпрдХреЛрдбрдЪреНрдпрд╛ рд╕рдВрдХрд▓рдирд╛рд╕ рд╕рдорд░реНрдерди рджреЗрдгрд╛рд░рд╛, C рд╕рд╣ рд╕реБрд▓рдн рдПрдХреАрдХрд░рдг, рддрд╕реЗрдЪ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░ рдЖрдгрд┐ рдкреЙрдЗрдВрдЯрд░реНрд╕рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдЖрд╣реЗ. - рдирд╡реАрди JVM рд▓рдХреНрд╖реНрдп - Java рдордзреНрдпреЗ рд▓рдХреНрд╖реНрдп рдХрд░рддрд╛рдирд╛ "-D jvm" рдзреНрд╡рдЬ рдЬреЛрдбреВрди Java рдХреЛрдб рд╕рдВрдХрд▓рдирд╛рдЪреА рдкрд╛рдпрд░реА рд╡рдЧрд│реВрди рддреБрдореНрд╣рд╛рд▓рд╛ jvm bytecode рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.
- рдХреЙрд▓рд┐рдВрдЧ рдлрдВрдХреНрд╢рдиреНрд╕ рдХрд┐рдВрд╡рд╛ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕рдЪреНрдпрд╛ рдмрд┐рдВрджреВрд╡рд░ рдЗрдирд▓рд╛рдЗрди-рдбрд┐рдкреНрд▓реЙрдп рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛, рдЬрд░реА рддреЗ рдЕрд╕реЗ рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗрд▓реЗ рдирд╕рд▓реЗ рддрд░реАрд╣реА.
- рд╕рдорд╛рд╡реЗрд╢рд╛рдЪреА рд╢рдХреНрдпрддрд╛
рд╕реНрдерд┐рд░ рд╡рд┐рд╕реНрддрд╛рд░ "@:using(path.ToExtension)" рд╡рд╛рдкрд░реВрди рдкреНрд░рдХрд╛рд░ (рдЬрд╕реЗ рдХреА "enum") рдШреЛрд╖рд┐рдд рдХрд░рддрд╛рдирд╛. - рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░ рдЖрддрд╛ "obj.foo = bar" рдЕрднрд┐рд╡реНрдпрдХреНрддреА рд░реАрд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "@:op(ab)" рдСрдкрд░реЗрдЯрд░рдЪреНрдпрд╛ "рд╕реЗрдЯ" рдЖрд╡реГрддреНрддреАрдЪреЗ рд╕рдорд░реНрдерди рдХрд░рддрд╛рдд.
- "for" рд▓реВрдк рд╕рд┐рдВрдЯреЕрдХреНрд╕ рдЖрддрд╛ рдХреА-рд╡реНрд╣реЕрд▓реНрдпреВ рдкреБрдирд░рд╛рд╡реГрддреНрддреАрд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ: "for (key => рд╕рдВрдЧреНрд░рд╣рд╛рддреАрд▓ рдореВрд▓реНрдп) {}".
- рдПрдХреНрд╕реНрдкреНрд░реЗрд╢рдиреНрд╕рдордзреНрдпреЗ xml-рд╕рд╛рд░рдЦреЗ рдорд╛рд░реНрдХрдЕрдк рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди: тАЬvar a = тА╣hi/тА║;тАЭ. рдЖрддреНрддрд╛рд╕рд╛рдареА, рд╣реЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдХреЗрд╡рд│ рдореЕрдХреНрд░реЛрд╕рд╣ рдкрд╛рд░реНрд╕рд┐рдВрдЧрд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ рдЖрдгрд┐ рдбрд┐рдЭрд╛рдЗрди рд╕реНрдЯреЗрдЬрд╡рд░ рдЖрд╣реЗ.
- рдирд┐рдирд╛рд╡реА рд░рдЪрдирд╛ рдкреНрд░рдХрд╛рд░рд╛рдВрдЪреНрдпрд╛ "рдкреВрд░реНрдг" рдиреЛрдЯреЗрд╢рдирдордзреАрд▓ рдкрд░реНрдпрд╛рдпреА рдлреАрд▓реНрдбрд╕рд╛рдареА рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рдЖрд╣реЗ: тАЬ{ var ?f:Int; }" (рд▓рд╣рд╛рди "{ ?f:Int }" рд╕рд╛рдареА рдкрд░реНрдпрд╛рдпреА).
- рдлрдВрдХреНрд╢рди рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯрд╕рд╛рдареА рдПрдирдо рд╡реНрд╣реЕрд▓реНрдпреВрдЬ рдЖрддрд╛ рдбреАрдлреЙрд▓реНрдЯ рд╡реНрд╣реЕрд▓реНрдпреВ рдЕрд╕реВ рд╢рдХрддрд╛рдд: "рдлрдВрдХреНрд╢рди fooтА╣TтА║(option:OptionтА╣TтА║ = None)".
- "enum abstract Name(BasicType) {}" рд╕рд┐рдВрдЯреЕрдХреНрд╕рд▓рд╛ рдпрд╛рдкреБрдвреЗ "enum" рдордзреНрдпреЗ "@:" рдЙрдкрд╕рд░реНрдЧ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА.
- рдЕрдореВрд░реНрдд рдЧрдгрдиреЗрд╕рд╛рдареА рд╕реНрд╡рдпрдВ-рдХреНрд░рдорд╛рдВрдХ:
enum abstract Foo(Int) {
var A; // 0
var B; // рез
}
enum abstract Bar(рд╕реНрдЯреНрд░рд┐рдВрдЧ) {
var A; // "рдЕ"
var B; // "рдм"
} - "рдмрд╛рд╣реНрдп" рдХреАрд╡рд░реНрдбрд▓рд╛ рдпрд╛рдкреБрдвреЗ "@:" рдЙрдкрд╕рд░реНрдЧ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА.
- рдкрд░реНрдпрд╛рдп рдХрд╛рдврд▓рд╛ "рдЕрд╡рдЬрд╛рд░реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧрджреНрд╡рд╛рд░реЗ рд╡рд░реНрдЧ рдлреАрд▓реНрдбрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд╛рдпрдиреЕрдорд┐рдХ" рдмрд╛рд╣реНрдп рд╡рд░реНрдЧрд╛рдВрд╕рд╛рдареА рдХрд┐рдВрд╡рд╛ рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░рд╛рджреНрд╡рд╛рд░реЗ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрджреНрд╡рд╛рд░реЗ рдЙрдкрд▓рдмреНрдз.
- рдЯрд╛рдИрдк рдЗрдВрдЯрд░рд╕реЗрдХреНрд╢рдирд╕рд╛рдареА "A рдЖрдгрд┐ B" рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рдЬреЛрдбрд▓реА, рдЬреА рд╕рдзреНрдпрд╛ рдлрдХреНрдд рдирд┐рдирд╛рд╡реА рд╕рдВрд░рдЪрдирд╛ рдЖрдгрд┐ рдкреНрд░рдХрд╛рд░ рдкреЕрд░рд╛рдореАрдЯрд░ рдорд░реНрдпрд╛рджрд╛рдВрдирд╛ рд▓рд╛рдЧреВ рд╣реЛрддреЗ. рдЬреБрдиреА рдорд░реНрдпрд╛рджрд╛ рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рдХрд╛рдвреВрди рдЯрд╛рдХрд▓реА рдЖрд╣реЗ.
- рд░рд┐рдХреНрдд "рдирдХрд╛рд╢рд╛" рдЙрджрд╛рд╣рд░рдгреЗ рддрдпрд╛рд░ рдХрд░рдгреЗ "var map:MapтА╣Int, StringтА║ = [];" рд╕рд┐рдВрдЯреЕрдХреНрд╕рджреНрд╡рд╛рд░реЗ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ. ре▓рд░реЗ рд╕рд╛рд░рдЦреЗ.
- рдЬреЛрдбрд▓реЗрд▓реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ "haxe.ds.ReadOnlyArray".
- рдореЗрдЯрд╛рдбреЗрдЯрд╛рдордзреНрдпреЗ рдЖрддрд╛ рдиреЗрдорд╕реНрдкреЗрд╕ рдЕрд╕реВ рд╢рдХрддрд╛рдд (тАЬ@:prefix.name function() {тАж}тАЭ). рддреНрдпрд╛рдЪрдкреНрд░рдорд╛рдгреЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рдВрд╕рд╣: тАЬ#if (some.flag... #endтАЭ.
- рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗрд▓реЗ IDE рд╕рд╛рдареА рдирд╡реАрди рд╕реЗрд╡рд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓
VSCode рд╕рд╛рдареА рдкреНрд▓рдЧрдЗрди . - рд╡реЗрдм API рд╕рд╛рдареА рдмрд╛рд╣реНрдп рд╡реНрдпрд╛рдЦреНрдпрд╛ (рдмрд╛рд╣реНрдп) рдЕрджреНрдпрддрдирд┐рдд рдХреЗрд▓реНрдпрд╛ рдЖрдгрд┐ рдЧрд╣рд╛рд│ рдЬреЛрдбрд▓реНрдпрд╛.
рд╕реНрддреНрд░реЛрдд: opennet.ru