Haxe ක්‍රමලේඛන භාෂාව නිකුත් කිරීම 4.0

ඇත මෙවලම් කට්ටලය නිකුත් කිරීම Haxe 4.0, ප්‍රබල ටයිප් කිරීම, හරස් සම්පාදකයක් සහ සම්මත ශ්‍රිත පුස්තකාලයක් සහිත එකම නමේ බහු-පරම උසස් මට්ටමේ ක්‍රමලේඛන භාෂාව ඇතුළත් වේ. මෙම ව්‍යාපෘතිය C++, HashLink/C, JavaScript, C#, Java, PHP, Python සහ Lua වෙත පරිවර්තන කිරීමට මෙන්ම, JVM, HashLink/JIT, Flash සහ Neko bytecode වෙත සම්පාදනය කිරීමටත්, එක් එක් ඉලක්ක වේදිකාවේ ස්වදේශීය හැකියාවන් වෙත ප්‍රවේශ වීමටත් සහාය දක්වයි. සම්පාදක කේතය විසින් බෙදා හරිනු ලැබේ GPLv2 බලපත්‍රය යටතේ, සහ Haxe සඳහා සංවර්ධනය කරන ලද සම්මත පුස්තකාලයක් සහ අතථ්‍ය යන්ත්‍රයක් නෙකෝ MIT බලපත්‍රය යටතේ.

භාෂාව වේ ප්රකාශනය-නැඹුරු ශක්තිමත් ටයිප් කිරීම සමඟ. වස්තු-නැඹුරු, සාමාන්‍ය සහ ක්‍රියාකාරී ක්‍රමලේඛන සංකල්ප සඳහා සහය දක්වයි.
Haxe වාක්‍ය ඛණ්ඩය ECMAScript හා සමීප වේ පුළුල් කරයි ස්ථිතික ටයිප් කිරීම, ස්වයංක්‍රීය අනුමානය, රටා ගැලපීම, ජෙනරික්ස්, ලූප සඳහා පුනරාවර්තකය මත පදනම් වූ, AST මැක්‍රෝස්, GADT (සාමාන්‍ය වීජීය දත්ත වර්ග), වියුක්ත වර්ග, නිර්නාමික ව්‍යුහයන්, සරල කළ අරා නිර්වචන, කොන්දේසි සහිත සම්පාදන ප්‍රකාශන, ක්ෂේත්‍ර අමුණන පාරදත්ත වැනි එහි විශේෂාංග , පන්ති සහ ප්‍රකාශන, තන්තු මැදිහත්වීම ('මගේ නම $නම'), ටයිප් පරාමිති ("නව Main‹String›('foo')"), සහ තවත් බොහෝ දේ.

පන්ති පරීක්ෂණය {
ස්ථිතික ශ්‍රිතය ප්‍රධාන() {
var මිනිසුන් = [
"එලිසබෙත්" => "ක්‍රමලේඛනය",
"ජොයෙල්" => "නිර්මාණය"
];

සඳහා (people.keys හි නම()) {
var job = මිනිස්සු[නම];
හෝඩුවාවක් ('$ නම ජීවත්වීම සඳහා $ රැකියාවක් කරයි!');
}
}
}

ප්රධාන නවෝත්පාදන අනුවාදය 4.0:

  • "String->Int->Bool" වෙනුවට "(නම:String, වයස:Int)->Bool" හෝ "(String, Int)->Bool" ශ්‍රිත වර්ගය සඳහන් කිරීම සඳහා නව වාක්‍ය ඛණ්ඩය.
  • ඊතල ශ්‍රිත වාක්‍ය ඛණ්ඩය "(a, b) -> a + b" වෙනුවට "function(a, b) return a + b" වේ.
  • ශුන්‍ය අගයන් භාවිතය හා සම්බන්ධ ගැටළු වලින් ආරක්ෂා වීම (පරීක්ෂණාත්මක විශේෂාංගය, ඇතැම් ක්ෂේත්‍ර, පන්ති හෝ පැකේජ සඳහා විකල්ප වශයෙන් සක්‍රීය කර ඇත).
  • "අවසාන" මූල පදය පන්ති ක්ෂේත්‍ර සහ වෙනස් කළ නොහැකි දේශීය විචල්‍යයන් සඳහා වේ. "අවසාන", ඒවා උරුමයෙන් යටපත් වීම වැළැක්වීමට සහ උරුම කළ නොහැකි පන්ති/අතුරු මුහුණත් සඳහා ශ්‍රිත නිර්වචනය කිරීමට ද භාවිතා කළ හැක.
  • සහාය Neko හැර අනෙකුත් සියලුම සම්පාදන ඉලක්ක මත පදනම් වර්ගය "String" සඳහා යුනිකෝඩ් සම්මතය.
  • බිල්ට් ඉන්ටර්ප්‍රෙටරය මුල සිට නැවත ලියා ඇත, එය දැන් නමින් පැමිණේ ඇගයීමට ලක්. නව පරිවර්තකයාට ස්තූතියි, ස්ක්‍රිප්ට් සහ මැක්‍රෝස් වඩා වේගයෙන් ධාවනය වේ. අන්තර්ක්‍රියාකාරී නිදොස්කරණ මාදිලිය සහය දක්වයි.
  • සම්පාදනය සඳහා නව ඉලක්ක පද්ධතිය (ඉලක්කය) හැෂ්ලින්ක් - Haxe සඳහා විෙශේෂෙයන් නිර්මාණය කර ඇති ඉහළ කාර්ය සාධන ධාවන කාල සීමාවක්, JIT ෙහෝ C සඳහා බයිට්කේතයට සම්පාදනය කිරීමට සහය වන අතර, C සමඟ පහසු ඒකාබද්ධතාවයක් ඇති අතර, අඩු මට්ටමේ සංඛ්‍යාත්මක වර්ග සහ දර්ශක සඳහා ප්‍රවේශය ඇත.
  • නව JVM ඉලක්කය - ජාවා හි ඉලක්ක කිරීමේදී "-D jvm" ධජය එකතු කිරීමෙන් ජාවා කේත සම්පාදන පියවර මඟ හැරීමෙන් jvm බයිට්කේත ජනනය කිරීමට ඔබට ඉඩ සලසයි.
  • ශ්‍රිත හෝ කන්ස්ට්‍රැක්ටර් ලෙස ප්‍රකාශ කර නොමැති වුවද, ඇමතීමේදී පේළිගත කිරීමේ හැකියාව.
  • ඇතුළත් කිරීමේ හැකියාව ස්ථිතික දිගු වර්ගයක් ප්‍රකාශ කිරීමේදී ("enum" වැනි) "@:using(path.ToExtension)" භාවිතයෙන්.
  • වියුක්ත වර්ග දැන් "obj.foo = bar" ප්‍රකාශන නැවත පූරණය කිරීමට "@:op(a.b)" ක්‍රියාකරුගේ "set" අනුවාදයකට සහය දක්වයි.
  • "for" loop syntax දැන් යතුරු-අගය පුනරාවර්තනය සඳහා සහය දක්වයි: "for (key => එකතුවේ ඇති අගය) {}".
  • ප්‍රකාශනවල xml වැනි සලකුණු භාවිතා කිරීම සඳහා සහාය: "var a = ‹hi/›;". දැනට, මෙම විශේෂාංගය ලබා ගත හැක්කේ මැක්‍රෝ සමඟ විග්‍රහ කිරීම සඳහා පමණක් වන අතර එය සැලසුම් අවධියේ පවතී.
  • නිර්නාමික ව්‍යුහ වර්ගවල “සම්පූර්ණ” අංකනයෙහි විකල්ප ක්ෂේත්‍ර සඳහා වන වාක්‍ය ඛණ්ඩය වන්නේ: “{var ?f:Int; }" ("{ ?f:Int }" යන කෙටි යෙදුමට විකල්පයක්).
  • Enum අගයන් දැන් ශ්‍රිත තර්ක සඳහා පෙරනිමි අගයන් විය හැක: "function foo‹T›(option:Option‹T› = None)".
  • "enum වියුක්ත නම(මූලික වර්ගය) {}" වාක්‍ය ඛණ්ඩයට තවදුරටත් "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› = [];" යන සින්ටැක්ස් හරහා ලබා ගත හැක. array එකකට සමානයි.
  • දත්ත ව්‍යුහය "haxe.ds.ReadOnlyArray" එකතු කරන ලදී.
  • පාරදත්තට දැන් නාම අවකාශයන් තිබිය හැක (“@:prefix.name function() {…}”). ඒ හා සමානව අර්ථ දැක්වීම් සමඟ: "#if (some.flag ... #end".
  • භාවිතා කරන IDE සඳහා නව සේවා ප්‍රොටෝකෝලය VSCode සඳහා ප්ලගිනය.
  • Web API සඳහා යාවත්කාලීන කරන ලද බාහිර නිර්වචන (බාහිර) සහ නැතිවූ ඒවා එකතු කරන ලදී.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න