Нашри забони барномасозии Haxe 4.0

Дастрас нашри асбобҳо Haxe 4.0, ки забони бисёрпарадигмаи сатҳи баланди барномасозии ҳамон номро бо чопкунии қавӣ, компилятори кросс ва китобхонаи стандартии функсияҳоро дар бар мегирад. Лоиҳа тарҷумаро ба C++, HashLink/C, JavaScript, C#, Java, PHP, Python ва Lua, инчунин тартиб додани JVM, HashLink/JIT, Flash ва Neko байткоди бо дастрасӣ ба имкониятҳои аслии ҳар як платформаи мавриди ҳадаф дастгирӣ мекунад. Рамзи компилятор паҳн мекунад дар доираи иҷозатномаи GPLv2 ва китобхонаи стандартӣ ва мошини виртуалӣ барои Haxe таҳия шудааст Неко таҳти иҷозатномаи MIT.

Забон аст ба ифода нигаронида шудааст бо чопкунии сахт. Консепсияҳои барномасозии ба объект нигаронидашуда, умумӣ ва функсионалӣ дастгирӣ карда мешаванд.
Синтаксиси Haxe ба ECMAScript наздик аст ва васеъ мекунад Хусусиятҳои он ба монанди чопкунии статикӣ, хулосаи автоматӣ, мувофиқати намуна, генерикҳо, итератор дар асоси ҳалқаҳо, макросҳои AST, GADT (Намудҳои умумии додаҳои алгебравӣ), навъҳои абстрактӣ, сохторҳои беном, таърифҳои массивҳои соддакардашуда, ифодаҳои тартибдиҳии шартӣ, замима кардани метамаълумот ба майдонҳо , синфҳо ва ифодаҳо, интерполясияи сатр ('Номи ман $name'), навъи параметрҳо ("нави Main‹String›('foo')") ва хеле бештар.

санҷиши синф {
Функсияи статикӣ main() {
var одамон = [
"Элизабет" => "Барномасозӣ",
"Ҷоэл" => "Тарроҳӣ"
];

барои (ном дар people.keys()) {
var job = одамон[ном];
trace('$name $кор барои зиндагӣ мекунад!');
}
}
}

асосӣ навовариҳо версияи 4.0:

  • Синтаксиси нав барои муайян кардани навъи функсия "(name:String, age:Int)->Bool" ё "(String, Int)->Bool" ба ҷои "String->Int->Bool".
  • Синтаксиси функсияи тирча ба ҷои "функсия(а, б) баргардонидани a + b" "(a, b) -> a + b" мебошад.
  • Муҳофизат аз мушкилоти марбут ба истифодаи арзишҳои Null (хусусияти таҷрибавӣ, ки ихтиёран барои майдонҳо, синфҳо ё бастаҳои муайян фаъол карда шудааст).
  • Калимаи калидии "ниҳоӣ" барои майдонҳои синф ва тағирёбандаҳои маҳаллӣ, ки тағирнопазиранд. "ниҳоӣ" инчунин метавонад барои муайян кардани функсияҳо истифода шавад, то ки онҳо аз ҷониби мерос бекор карда шаванд ва барои синфҳо/интерфейсҳое, ки мерос гирифта намешаванд.
  • таъмин Стандарти Юникод барои навъи асосии "String" дар ҳама ҳадафҳои компиляция ба истиснои Neko.
  • Тарҷумони дарунсохт аз сифр аз нав навишта шудааст, ки ҳоло бо ном меояд Арзиш. Ба шарофати тарҷумони нав, скриптҳо ва макросҳо хеле тезтар кор мекунанд. Ҳолати ислоҳи интерактивӣ дастгирӣ карда мешавад.
  • Системаи нави мақсаднок барои тартиб додан (ҳадаф) Hashlink - вақти иҷроии баландсифат, ки махсус барои Haxe тарҳрезӣ шудааст, таҳияи байткодро барои JIT ё C дастгирӣ мекунад, ҳамгироии осон бо C ва инчунин дастрасӣ ба навъҳои рақамӣ ва нишондиҳандаҳои сатҳи паст дорад.
  • Ҳадафи нави JVM - ба шумо имкон медиҳад, ки байткоди jvm-ро тавассути гузариш аз қадами тартиб додани коди Java тавассути илова кардани парчами "-D jvm" ҳангоми ҳадаф дар Java тавлид кунед.
  • Қобилияти ҷойгиркунии дохилӣ дар нуқтаи даъват кардани функсияҳо ё конструкторҳо, ҳатто агар онҳо чунин эълон нашуда бошанд.
  • Имконияти дохил кардан васеъшавии статикӣ ҳангоми эълони навъ (ба мисли "enum") бо истифода аз "@:using(path.ToExtension)".
  • Навъҳои абстрактӣ ҳоло версияи "маҷмӯи" оператори "@:op(a.b)" -ро барои аз нав бор кардани ифодаҳои "obj.foo = bar" дастгирӣ мекунанд.
  • Синтаксиси ҳалқаи "for" ҳоло итератсияи калид-арзишро дастгирӣ мекунад: "for (калид => арзиш дар коллексия) {}".
  • Дастгирии истифодаи аломатгузории ба xml монанд дар ибораҳо: “var a = ‹hi/›;”. Ҳоло ин хусусият танҳо барои таҳлил бо макросҳо дастрас аст ва дар марҳилаи тарҳрезӣ қарор дорад.
  • Синтаксиси майдонҳои ихтиёрӣ дар қайди "пурраи" намудҳои сохтори беном ин аст: "{ var ?f:Int; }" (алтернатива ба кӯтоҳи "{ ?f:Int }").
  • Қиматҳои рақамӣ акнун метавонанд арзишҳои пешфарз барои аргументҳои функсия бошанд: "функсияи foo‹T›(интихоб:Option‹T› = Ҳеҷ)".
  • Синтаксиси "enum abstract Name(BasicType) {}" дигар префикси "@:"-ро дар "enum" талаб намекунад.
  • Рақамгузории худкор барои рӯйхатҳои абстрактӣ:

    enum абстракт Foo(Int) {
    var A; // 0
    var B; // 1
    }
    enum абстракт Бар(Стринг) {
    var A; // "А"
    var B; // "Б"
    }

  • Калимаи калидии "extern" дигар истифодаи префикси "@:"-ро талаб намекунад.
  • Варианти " хориҷ карда шудтатбиқ менамояд Dynamic" барои дастрасӣ ба майдонҳои синф тавассути сатрҳо. Барои дарсҳои extern ё тавассути татбиқи намуди абстрактӣ дастрас аст.
  • Синтаксиси "A & B" барои чорроҳаи навъи иловашуда, ки дар айни замон танҳо ба сохторҳои беном ва маҳдудиятҳои параметрҳои тип дахл дорад. Синтаксиси пешинаи маҳдудият хориҷ карда шуд.
  • Эҷоди мисолҳои холии "Харитаи" тавассути синтаксиси "var map:Map‹Int, String› = [];" дастрас аст. ба массив монанд аст.
  • Сохтори маълумоти иловашуда "haxe.ds.ReadOnlyArray".
  • Акнун метамаълумот метавонад фазои ном дошта бошад (“@:prefix.name function() {…}”). Ба ҳамин монанд бо таърифҳо: "#if (some.flag ... #end".
  • Протоколи нави хидматрасонӣ барои IDE дар плагин барои VSCode.
  • Таърифҳои беруна (берунӣ) барои API-ҳои веб нав карда шуданд ва таърифҳои гумшуда илова карда шуданд.

Манбаъ: opennet.ru

Илова Эзоҳ