Rilis basa pemrograman Haxe 4.0

Kasedhiya release toolkit Haxe 4.0, sing kalebu basa pamrograman tingkat dhuwur multi-paradigma kanthi jeneng sing padha karo ketik sing kuat, kompiler lintas lan perpustakaan fungsi standar. Proyek kasebut ndhukung terjemahan menyang C++, HashLink/C, JavaScript, C#, Java, PHP, Python lan Lua, uga kompilasi menyang JVM, HashLink/JIT, Flash lan Neko bytecode, kanthi akses menyang kemampuan asli saben platform target. Kode kompiler disebarake dening ing lisensi GPLv2, lan perpustakaan standar lan mesin virtual dikembangaké kanggo Haxe Neko miturut lisensi MIT.

Basa iku ekspresi-oriented karo ngetik kuwat. Konsep pemrograman berorientasi obyek, umum lan fungsional didhukung.
Sintaks Haxe cedhak karo ECMAScript lan nggedhekake fitur kayata ngetik statis, inferensi autotype, pencocokan pola, generik, basis iterator kanggo puteran, makro AST, GADT (Jenis Data Aljabar Umum), jinis abstrak, struktur anonim, definisi array sing disederhanakake, ekspresi kompilasi kondisional, nempelake metadata menyang kolom , kelas lan ekspresi, interpolasi string ('Jenengku $jeneng'), tipe parameter ("String Utama anyar›('foo')"), lan luwih akeh.

tes kelas {
fungsi statis utama() {
var wong = [
"Elizabeth" => "Pemrograman",
"Joel" => "Desain"
];

kanggo (jeneng ing people.keys()) {
var proyek = wong [jeneng];
trace('$jeneng gawe $pekerjaan kanggo urip!');
}
}
}

Utama inovasi versi 4.0:

  • Sintaks anyar kanggo nemtokake jinis fungsi "(jeneng: String, umur: Int) -> Bool" utawa "(String, Int) -> Bool" tinimbang "String->Int->Bool".
  • Sintaks fungsi panah yaiku "(a, b) -> a + b" tinimbang "fungsi (a, b) ngasilake a + b".
  • Perlindhungan marang masalah sing ana gandhengane karo panggunaan nilai Null (fitur eksperimen, bisa dipilih kanggo lapangan, kelas utawa paket tartamtu).
  • Tembung kunci "final" kanggo kolom kelas lan variabel lokal sing ora bisa diganti. "final" uga bisa digunakake kanggo netepake fungsi kanggo nyegah saka kang ditindhes dening warisan lan kanggo kelas / antarmuka sing ora bisa dipun warisaken.
  • support Standar Unicode kanggo jinis dhasar "String" ing kabeh target kompilasi kajaba Neko.
  • Dibangun ing interpreter ditulis maneh saka ngeruk, kang saiki ana ing jeneng Evaluasi. Thanks kanggo juru anyar, skrip lan makro mlaku luwih cepet. Mode debugging interaktif didhukung.
  • Sistem target anyar kanggo kompilasi (target) Hashlink - runtime kinerja dhuwur sing dirancang khusus kanggo Haxe, ndhukung kompilasi kanggo bytecode kanggo JIT utawa C, nduweni integrasi sing gampang karo C, uga akses menyang jinis numerik tingkat rendah lan penunjuk.
  • Target JVM anyar - ngidini sampeyan ngasilake bytecode jvm kanthi ngliwati langkah kompilasi kode Jawa kanthi nambahake gendera "-D jvm" nalika nargetake ing Jawa.
  • Kemampuan kanggo inline-nyebarke ing titik nelpon fungsi utawa konstruktor, sanajan padha ora ngumumaké minangka kuwi.
  • Kemungkinan inklusi ekstensi statis nalika ngumumake jinis (kayata "enum") nggunakake "@: nggunakake (path.ToExtension)".
  • Jinis abstrak saiki ndhukung versi "set" saka operator "@: op (a.b)" kanggo reload "obj.foo = bar" ekspresi.
  • Sintaks loop "kanggo" saiki ndhukung pengulangan nilai kunci: "kanggo (kunci => nilai ing koleksi) {}".
  • Dhukungan kanggo nggunakake markup kaya xml ing ekspresi: "var a = ‹hi/›;". Saiki, fitur iki mung kasedhiya kanggo parsing karo makro lan ing tahap desain.
  • Sintaks kanggo kolom opsional ing notasi "lengkap" saka jinis struktur anonim yaiku: "{ var ?f:Int; }" (alternatif kanggo singkatan "{ ?f:Int }").
  • Nilai enum saiki bisa dadi nilai standar kanggo argumen fungsi: "function foo‹T›(option:Option‹T› = None)".
  • Sintaks "Enum abstract Name(BasicType) {}" ora mbutuhake prefiks "@:" ing "enum".
  • Nomer otomatis kanggo enumerasi abstrak:

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

  • Tembung kunci "eksternal" ora mbutuhake prefiks "@:" maneh.
  • Dibusak pilihan "nindakake Dinamis" kanggo ngakses kolom kelas liwat strings. Kasedhiya kanggo kelas eksternal utawa liwat implementasine kanthi jinis abstrak.
  • Sintaks "A & B" ditambahake kanggo persimpangan jinis, sing saiki mung ditrapake kanggo struktur anonim lan watesan parameter jinis. Sintaks kendala lawas wis dibusak.
  • Nggawe conto "Peta" kosong kasedhiya liwat sintaks "var map:Map‹Int, String› = [];" padha karo array.
  • Nambahake struktur data "haxe.ds.ReadOnlyArray".
  • Metadata saiki bisa duwe spasi jeneng (“@:prefix.name function() {…}”). Kajaba karo definisi: "#yen (sawetara.flag ... #end".
  • Protokol layanan anyar kanggo IDE sing digunakake ing plugin kanggo VSCode.
  • Définisi eksternal (eksternal) sing dianyari kanggo API Web lan ditambahake sing ilang.

Source: opennet.ru

Add a comment