Ngaleupaskeun basa pamrograman Haxe 4.0

Aya release toolkit Haxe 4.0, nu ngawengku multi-paradigma-tingkat tinggi basa programming tina nami nu sami sareng ketikan kuat, cross-compiler sarta perpustakaan standar fungsi. Proyék ngadukung tarjamahan kana C ++, HashLink / C, JavaScript, C #, Java, PHP, Python sareng Lua, ogé kompilasi kana JVM, HashLink / JIT, Flash sareng Neko bytecode, kalayan aksés kana kamampuan asli unggal platform target. Kodeu kompiler disebarkeun ku handapeun lisénsi GPLv2, sarta perpustakaan baku sarta mesin virtual dikembangkeun pikeun Haxe neko handapeun lisénsi MIT.

Basa téh berorientasi éksprési kalawan ketikan kuat. Konsép program anu berorientasi obyék, umum sareng fungsional dirojong.
sintaksis Haxe deukeut ECMAScript jeung ngalegaan fiturna sapertos ketikan statik, inferensi autotype, cocog pola, generik, basis iterator pikeun puteran, AST macros, GADT (Generalized Aljabar Data Types), tipe abstrak, struktur anonim, harti array disederhanakeun, ekspresi kompilasi kondisional, ngalampirkeun metadata kana widang. , kelas jeung éksprési, interpolasi string ('Nami abdi $nami'), tipe parameter ("String Utama anyar›('foo')"), jeung leuwih loba.

Tes kelas {
fungsi statik main() {
var jalma = [
"Elizabeth" => "Pemrograman",
"Joel" => "Desain"
];

pikeun (ngaran dina people.keys()) {
var pakasaban = jalma [ngaran];
trace('$ngaran teu $proyék keur hirup!');
}
}
}

utama inovasi Vérsi 4.0:

  • Sintaksis anyar pikeun nangtukeun jenis fungsi "(ngaran: String, umur: Int) -> Bool" atawa "(String, Int) -> Bool" tinimbang "String-> Int-> Bool".
  • Sintaksis fungsi panah nyaéta "(a, b) -> a + b" tinimbang "fungsi (a, b) balik a + b".
  • Perlindungan tina masalah anu aya hubunganana sareng panggunaan nilai Null (fitur ékspérimén, diaktipkeun sacara opsional pikeun widang, kelas atanapi bungkusan anu tangtu).
  • Kecap konci "final" kanggo widang kelas sareng variabel lokal anu teu tiasa dirobih. "final" ogé bisa dipaké pikeun nangtukeun fungsi pikeun nyegah eta ti keur overridden ku warisan jeung kelas / interfaces nu teu bisa diwariskeun.
  • sokongan Standar Unicode pikeun tipe dasar "String" dina sakabéh target kompilasi iwal Neko.
  • Diwangun-di juru ditulis ulang ti scratch, nu ayeuna asalna di handapeun ngaran Meunteun. Hatur nuhun kana juru anyar, skrip sareng makro ngajalankeun langkung gancang. Mode debugging interaktif dirojong.
  • Sistem target anyar pikeun kompilasi (target) Hashlink - runtime-kinerja tinggi dirancang husus pikeun Haxe, ngarojong kompilasi kana bytecode pikeun JIT atanapi C, boga integrasi gampang jeung C, kitu ogé aksés ka tipe numerik tingkat handap tur pointers.
  • Target JVM anyar - ngamungkinkeun anjeun ngahasilkeun bytecode jvm ku ngalangkungan léngkah kompilasi kode Java ku nambihan bendera "-D jvm" nalika nargétkeun di Java.
  • Kamampuhan pikeun inline-nyebarkeun dina titik nelepon fungsi atawa konstruktor, sanajan maranéhna teu dinyatakeun salaku misalna.
  • Kamungkinan inklusi ekstensi statik nalika nyatakeun jinis (sapertos "enum") nganggo "@: ngagunakeun (path.ToExtension)".
  • Jenis abstrak ayeuna ngarojong versi "set" tina operator "@: op (ab)" pikeun ngamuat ulang "obj.foo = bar" ekspresi.
  • Sintaksis loop "kanggo" ayeuna ngarojong iterasi konci-nilai: "kanggo (konci => nilai dina kumpulan) {}".
  • Rojongan pikeun ngagunakeun markup kawas xml dina ekspresi: "var a = ‹hi/›;". Pikeun ayeuna mah, fitur ieu ngan sadia pikeun parsing jeung macros sarta dina tahap desain.
  • Sintaksis pikeun widang pilihan dina notasi "pinuh" tipe struktur anonim nyaéta: "{ var ?f:Int; }" (alternatif pikeun pondok "{ ?f:Int }").
  • Nilai enum ayeuna tiasa janten nilai standar pikeun argumen fungsi: "function foo‹T›(option:Option‹T› = Euweuh)".
  • Sintaksis "Enum abstract Name(BasicType) {}" henteu deui merlukeun awalan "@:" dina "enum".
  • Panomeran otomatis pikeun enumerasi abstrak:

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

  • Kecap konci "jaba" henteu peryogi deui nganggo awalan "@:".
  • Dihapus pilihan "panerapan Dinamis" pikeun ngakses widang kelas via string. Sadia pikeun kelas extern atawa ngaliwatan palaksanaan ku tipe abstrak.
  • Ditambahkeun "A & B" sintaksis pikeun tipe simpang, nu ayeuna ngan lumaku pikeun struktur anonim jeung tipe konstrain parameter. Sintaksis konstrain anu lami parantos dipupus.
  • Nyiptakeun instansi "Peta" kosong sayogi ngalangkungan sintaksis "var map: Map‹Int, String› = [];" sarupa Asép Sunandar Sunarya.
  • Ditambahkeun struktur data "haxe.ds.ReadOnlyArray".
  • Metadata ayeuna tiasa gaduh spasi ngaran (“@:prefix.name function() {…}”). Nya kitu jeung definisi: "#lamun (sababaraha.flag ... #tungtung".
  • Protokol layanan anyar pikeun IDEs dipaké dina plugin pikeun VSCode.
  • Diropéa definisi éksternal (éksternal) pikeun API Wéb sarta ditambahkeun leungit.

sumber: opennet.ru

Tambahkeun komentar