Haxe 4.0 proqramlaşdırma dilinin buraxılışı

Mövcuddur alət dəsti buraxılışı Haxe 4.0, güclü yazma, çarpaz kompilyator və standart funksiyalar kitabxanası ilə eyni adlı çox paradiqmalı yüksək səviyyəli proqramlaşdırma dilini ehtiva edir. Layihə C++, HashLink/C, JavaScript, C#, Java, PHP, Python və Lua dillərinə tərcüməni, həmçinin JVM, HashLink/JIT, Flash və Neko bayt koduna kompilyasiyanı, hər bir hədəf platformanın yerli imkanlarına çıxışı dəstəkləyir. Kompilyator kodu yayılır GPLv2 lisenziyası və Haxe üçün hazırlanmış standart kitabxana və virtual maşın Neko MIT lisenziyası altında.

Dildir ifadə yönümlü güclü yazma ilə. Obyekt yönümlü, ümumi və funksional proqramlaşdırma konsepsiyaları dəstəklənir.
Haxe sintaksisi ECMAScript-ə yaxındır və genişlənir onun statik yazma, avtotipdən nəticə çıxarma, nümunə uyğunluğu, generiklər, döngələr üçün iterator əsaslı, AST makroları, GADT (Ümumiləşdirilmiş Cəbri Məlumat Tipləri), abstrakt tiplər, anonim strukturlar, sadələşdirilmiş massiv tərifləri, şərti tərtib ifadələri, sahələrə metadata əlavə etmək kimi xüsusiyyətləri , siniflər və ifadələr, sətir interpolasiyası ('Mənim adım $name'), tip parametrləri ("yeni Main‹String›('foo')") və daha çox.

sinif testi {
statik funksiya main() {
var insanlar = [
"Elizabeth" => "Proqramlaşdırma",
"Joel" => "Dizayn"
];

üçün (insanlar.keys()-də ad) {
var iş = insanlar[ad];
trace('$name dolanmaq üçün $iş edir!');
}
}
}

Əsas yeniliklər 4.0 versiyası:

  • "String->Int->Bool" əvəzinə "(name:String, age:Int)->Bool" və ya "(String, Int)->Bool" funksiya növünü təyin etmək üçün yeni sintaksis.
  • Ox funksiyasının sintaksisi "funksiya (a, b) a + b qaytarmaq" əvəzinə "(a, b) -> a + b" dir.
  • Null dəyərlərinin istifadəsi ilə bağlı problemlərdən qorunma (müəyyən sahələr, siniflər və ya paketlər üçün isteğe bağlı olaraq aktivləşdirilmiş eksperimental xüsusiyyət).
  • "Son" açar sözü dəyişməz olan sinif sahələri və yerli dəyişənlər üçündür. "final" funksiyaları irsiyyət tərəfindən ləğv edilməsinin qarşısını almaq üçün və miras alına bilməyən siniflər/interfeyslər üçün müəyyən etmək üçün də istifadə edilə bilər.
  • Dəstək Neko istisna olmaqla, bütün tərtib hədəflərində "String" baza növü üçün Unicode standartı.
  • Sıfırdan yenidən yazılmış daxili tərcüməçi, indi adı altında gəlir Qiymətləndirin. Yeni tərcüməçi sayəsində skriptlər və makrolar daha sürətli işləyir. İnteraktiv sazlama rejimi dəstəklənir.
  • Tərtib üçün yeni hədəf sistemi (hədəf) Hashlink - JIT və ya C üçün baytkoda kompilyasiyanı dəstəkləyən, xüsusi olaraq Haxe üçün nəzərdə tutulmuş yüksək performanslı iş vaxtı, C ilə asan inteqrasiyaya, həmçinin aşağı səviyyəli rəqəmli tiplərə və göstəricilərə çıxışa malikdir.
  • Yeni JVM hədəfi - Java-da hədəf seçərkən "-D jvm" bayrağı əlavə etməklə Java kodunun tərtibi addımını ataraq jvm bayt kodunu yaratmağa imkan verir.
  • Funksiyaları və ya konstruktorları çağırma nöqtəsində, hətta elan edilməsələr də, daxili yerləşdirmə qabiliyyəti.
  • Daxil olma imkanı statik uzantılar "@:using(path.ToExtension)" istifadə edərək növü ("enum" kimi) elan edərkən.
  • Abstrakt tiplər indi "obj.foo = bar" ifadələrini yenidən yükləmək üçün "@:op(a.b)" operatorunun "set" versiyasını dəstəkləyir.
  • "for" döngə sintaksisi indi açar-dəyər iterasiyasını dəstəkləyir: "for (açar => kolleksiyada dəyər) {}".
  • İfadələrdə xml kimi işarələmədən istifadə üçün dəstək: “var a = ‹hi/›;”. Hələlik bu funksiya yalnız makrolarla təhlil üçün əlçatandır və dizayn mərhələsindədir.
  • Anonim struktur növlərinin “tam” qeydində isteğe bağlı sahələr üçün sintaksis belədir: “{ var ?f:Int; }" (qısa "{ ?f:Int }" üçün alternativ).
  • Enum dəyərləri indi funksiya arqumentləri üçün standart dəyərlər ola bilər: "funksiya foo‹T›(seçim:Seçim‹T› = Yoxdur)".
  • "enum abstract Name(BasicType) {}" sintaksisi artıq "enum"da "@:" prefiksini tələb etmir.
  • Abstrakt sadalamalar üçün avtomatik nömrələmə:

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

  • "extern" açar sözü artıq "@:" prefiksinin istifadəsini tələb etmir.
  • Seçim silindi "tətbiq edir Sətirlər vasitəsilə sinif sahələrinə daxil olmaq üçün Dinamik". Ekstern siniflər üçün və ya mücərrəd tipdə həyata keçirmək üçün mövcuddur.
  • Hal-hazırda yalnız anonim strukturlara və tip parametri məhdudiyyətlərinə aid olan növ kəsişməsi üçün "A və B" sintaksisi əlavə edildi. Köhnə məhdudiyyət sintaksisi silindi.
  • Boş "Xəritə" nümunələri yaratmaq "var map:Map‹Int, String› = [];" sintaksisi vasitəsilə mümkündür. massiləyə bənzəyir.
  • Əlavə edilmiş məlumat strukturu "haxe.ds.ReadOnlyArray".
  • Metadata indi ad boşluqlarına malik ola bilər (“@:prefix.name funksiyası() {…}”). Eyni şəkildə təriflərlə: “#if (bəzi.bayraq ... #end”.
  • İstifadə olunan IDE-lər üçün yeni xidmət protokolu VSCode üçün plagin.
  • Veb API-lər üçün xarici təriflər (xarici) yeniləndi və çatışmayanlar əlavə edildi.

Mənbə: opennet.ru

Добавить комментарий