پروگرامنگ ٻولي جو رليز Haxe 4.0

دستياب toolkit ڇڏڻ هيڪس 4.0، جنهن ۾ هڪ ئي نالي جي ملٽي-پيراڊيم اعليٰ سطحي پروگرامنگ ٻولي شامل آهي مضبوط ٽائپنگ سان، هڪ ڪراس-ڪمپائلر ۽ افعال جي هڪ معياري لائبريري. پروجيڪٽ C++، HashLink/C، JavaScript، C#، Java، PHP، Python ۽ Lua جي ترجمي کي سپورٽ ڪري ٿو، انهي سان گڏ JVM، HashLink/JIT، Flash ۽ Neko bytecode جي تاليف، هر ٽارگيٽ پليٽ فارم جي مقامي صلاحيتن تائين رسائي سان. ڪمپيلر ڪوڊ طرفان ورهايل GPLv2 لائسنس جي تحت، ۽ Haxe لاءِ هڪ معياري لائبريري ۽ هڪ ورچوئل مشين تيار ڪئي وئي آهي نڪو MIT لائسنس تحت.

ٻولي آهي اظهار تي مبني مضبوط ٽائپنگ سان. اعتراض تي مبني، عام ۽ فنڪشنل پروگرامنگ تصورات جي حمايت ڪئي وئي آهي.
هيڪس نحو ECMAScript جي ويجهو آهي ۽ وڌائي ٿو ان جون خاصيتون جيئن ته جامد ٽائپنگ، آٽو ٽائپ انفرنس، نمونن جي ميلاپ، جنريڪس، آئٽرٽر تي ٻڌل لوپس، AST ميڪرو، GADT (عام الجبريڪ ڊيٽا جا قسم)، تجريدي قسم، گمنام ڍانچي، آسان صفن جي تعريف، مشروط تاليف اظهار، فيلڊ ميٽاداٽا سان ڳنڍڻ , ڪلاسز ۽ ايڪسپريشنز، اسٽرنگ انٽرپوليشن ('My name is $name')، ٽائيپ پيراميٽر ("new Main‹String›('foo')")، ۽ گهڻو وڌيڪ.

ڪلاس ٽيسٽ {
جامد فنڪشن مکيه () {
var ماڻهو = [
"ايلزبيٿ" => "پروگرامنگ"،
"جويل" => "ڊزائن"
];

for (name in people.keys()) {
var نوڪري = ماڻهو [نالو]؛
trace('$name ڪندو آهي $job for a living!');
}
}
}

مکيه جدت نسخو 4.0:

  • فنڪشن جي قسم جي وضاحت لاءِ نئون نحو "(نالو: اسٽرنگ، عمر: انٽ)->بول" يا "(String، Int)->Bool" بدران "String->Int->Bool".
  • تير فنڪشن نحو "(a, b) -> a + b" بدران "function(a, b) return a + b" آهي.
  • Null قدرن جي استعمال سان لاڳاپيل مسئلن جي خلاف تحفظ (تجرباتي خصوصيت، اختياري طور تي ڪجھ خاص شعبن، طبقن يا پيڪيجز لاءِ فعال ٿيل).
  • "فائنل" لفظ ڪلاس جي شعبن ۽ مقامي متغيرن لاءِ آھي جيڪي ناقابل تبديلي آھن. "فائنل" پڻ استعمال ڪري سگھجن ٿا افعال جي وضاحت ڪرڻ لاءِ انھن کي وراثت ۽ طبقن/انٽرفيس لاءِ جن کي ورثي ۾ نه ٿو ملي سگھي.
  • حمايت يونيڪوڊ معيار بنيادي قسم "اسٽرنگ" لاءِ سڀني ڪمپليشن هدفن تي سواءِ Neko.
  • تعمير ٿيل مترجم شروع کان ٻيهر لکندو، جيڪو هاڻي نالي هيٺ اچي ٿو چرپر. نئين مترجم جي مهرباني، اسڪرپٽ ۽ ميڪرو تمام تيز هلندا آهن. انٽرايڪٽو ڊيبگنگ موڊ جي حمايت ڪئي وئي آهي.
  • تاليف لاءِ نئون ھدف وارو نظام (ھدف) هاش لنڪ - هڪ اعليٰ ڪارڪردگي وارو رن ٽائم خاص طور تي Haxe لاءِ ٺهيل آهي، JIT يا C لاءِ بائيٽ ڪوڊ جي تاليف کي سپورٽ ڪندي، C سان آسان انضمام آهي، انهي سان گڏ گهٽ-سطح جي عددي قسمن ۽ پوائنٽرز تائين پهچ.
  • نئون JVM ٽارگيٽ - توهان کي اجازت ڏئي ٿو jvm bytecode پيدا ڪرڻ جي ذريعي جاوا ڪوڊ گڏ ڪرڻ واري قدم کي ڇڏڻ سان "-D jvm" پرچم شامل ڪندي جڏهن جاوا ۾ ٽارگيٽ ڪيو وڃي.
  • ان لائن-ڊپلائي ڪرڻ جي صلاحيت ڪالنگ فنڪشن يا تعمير ڪندڙن جي نقطي تي، جيتوڻيڪ انهن کي اهڙي طرح قرار نه ڏنو ويو آهي.
  • شموليت جو امڪان جامد واڌارو جڏهن "@:using(path.ToExtension)" استعمال ڪندي هڪ قسم (جهڙوڪ "enum") جو اعلان ڪيو وڃي.
  • خلاصي جا قسم ھاڻي "@:op(ab)" آپريٽر جي "set" ورجن کي سپورٽ ڪن ٿا "obj.foo = bar" ايڪسپريشن کي ٻيهر لوڊ ڪرڻ لاءِ.
  • "لاءِ" لوپ نحو ھاڻي ڪيئي-ويليو ورجائي کي سپورٽ ڪري ٿو: "لاء (key => مجموعي ۾ قدر) {}".
  • ايڪسپريس ۾ xml جهڙو مارڪ اپ استعمال ڪرڻ لاءِ سپورٽ: “var a = ‹hi/›؛”. في الحال، هي خصوصيت صرف ميڪرو سان پارس ڪرڻ لاءِ موجود آهي ۽ ڊزائين اسٽيج تي آهي.
  • گمنام ساخت جي قسمن جي "مڪمل" نوٽيشن ۾ اختياري شعبن لاء نحو آهي: "{ var ?f:Int; }" (مختصر "{ ?f:Int }" جو متبادل).
  • Enum قدر ھاڻي ڊفالٽ قدر ٿي سگھي ٿو فنڪشن جي دليلن لاءِ: "function foo‹T›(option:Option‹T› = None)".
  • "enum abstract Name(BasicType) {}" نحو کي هاڻي "enum" ۾ "@:" اڳياڙي جي ضرورت ناهي.
  • تجريدي ڳڻپ لاءِ خودڪار نمبرنگ:

    enum abstract Foo (Int) {
    var A؛ // 0
    var B؛ // 1
    }
    enum abstract Bar(String) {
    var A؛ // "الف"
    var B؛ // "ب"
    }

  • "ٻاهريون" لفظ هاڻي "@:" اڳياڙي جي استعمال جي ضرورت ناهي.
  • اختيار هٽائي ڇڏيو "لاڳو ٿئي ٿو متحرڪ" طبقن جي شعبن تائين رسائي حاصل ڪرڻ لاء اسٽرنگ ذريعي. خارجي طبقن لاءِ دستياب آهي يا هڪ خلاصي قسم جي عمل ذريعي.
  • شامل ڪيو ويو "A ۽ B" نحو لاءِ قسم جي چونڪ لاءِ، جيڪو في الحال صرف گمنام ڍانچي ۽ ٽائيپ پيراميٽر جي پابندين تي لاڳو ٿئي ٿو. پراڻي رڪاوٽ نحو کي هٽايو ويو آهي.
  • خالي "نقشو" مثال ٺاهڻ نحو ذريعي دستياب آهي "var map:Map‹Int, String› = [];" هڪ صف وانگر.
  • شامل ڪيل ڊيٽا جي جوڙجڪ "haxe.ds.ReadOnlyArray".
  • Metadata ۾ ھاڻي نالا اسپيس (“@:prefix.name function() {…}”) ٿي سگھن ٿا. ساڳي طرح وصفن سان: "#if (some.flag ... #end".
  • استعمال ٿيل IDEs لاءِ نئون سروس پروٽوڪول VSCode لاءِ پلگ ان.
  • تازه ٿيل خارجي وصفون (ٻاهريون) ويب APIs لاءِ ۽ شامل ٿيل غائب.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو