تستخدم Roblox لغة البرمجة Luau. عينات الكود والجداول التالية تشير إلى بعض الاختلافات بين نحويات C# و Luau.
نهايات السطور
لا تحتاج إلى الفواصل المنقوطة في Luau، لكن ذلك لا يكسر التركيب.
الكلمات المحجوزة
الجدول التالي يحتوي على الكلمات المحجوزة في Luau ومقابلاتها في C#. لاحظ أنه لا يظهر جميع كلمات C# المحجوزة.
| Luau | C# |
|---|---|
| and | |
| break | break |
| do | do |
| if | if |
| else | else |
| elseif | else if |
| then | |
| end | |
| true | true |
| false | false |
| for | for أو foreach |
| function | |
| in | in |
| local | |
| nil | null |
| not | |
| or | |
| repeat | |
| return | return |
| until | |
| while | while |
التعليقات
التعليقات في Luau-- تعليق خط واحد--[[ الناتج الناتج:تعليق كتلة--]]
التعليقات في C#// تعليق خط واحد/*تعليق كتلة*/
السلاسل النصية
السلاسل النصية في Luau-- سلسلة نصية متعددة الأسطرlocal multiLineString = [[هذه سلسلة نصية،عند طباعتها، تظهرعلى أسطر متعددة]]-- دمجlocal s1 = "هذه سلسلة نصية "local s2 = "تتكون من جزئين."local endString = s1 .. s2
السلاسل النصية في C#// سلسلة نصية متعددة الأسطرstring multiLineString1 = "هذه سلسلة نصية،\nعند طباعتها، تظهر\n على أسطر متعددة.";string multiLineString2 = @"هذه سلسلة نصية،عند طباعتها، تظهرعلى أسطر متعددة";// دمجstring s1 = "هذه سلسلة نصية ";string s2 = "تتكون من جزئين.";string endString = s1 + s2;
الجداول
لتعلم المزيد عن الجداول في Luau، انظر الجداول.
الجداول القاموسية
يمكنك استخدام الجداول في Luau كقواميس تمامًا مثل C#.
الجداول القاموسية في Luaulocal dictionary = {val1 = "هذا",val2 = "هو"}print(dictionary.val1) -- يخرج 'هذا'print(dictionary["val1"]) -- يخرج 'هذا'dictionary.val1 = nil -- يزيل 'val1' من الجدولdictionary["val3"] = "قاموس" -- يكتب فوق 'val3' أو يضيف زوج مفتاح-قيمة جديد
الجداول القاموسية في C#Dictionary dictionary = new Dictionary(){{ "val1", "هذا" },{ "val2", "هو" }};Console.WriteLine(dictionary["val1"]); // يخرج 'هذا'dictionary.Remove("val1"); // يزيل 'val1' من القاموسdictionary["val3"] = "قاموس"; // يكتب فوق 'val3' أو يضيف زوج مفتاح-قيمة جديدdictionary.Add("val3", "قاموس"); // ينشئ زوج مفتاح-قيمة جديد
الجداول ذات الفهارس العددية
يمكنك استخدام الجداول في Luau كمصفوفات تمامًا مثل C#. تبدأ المؤشرات من 1 في Luau و 0 في C#.
الجداول ذات الفهارس العددية في Luaulocal npcAttributes = {"قوي"، "ذكي"}print(npcAttributes[1]) -- يخرج 'قوي'print(#npcAttributes) -- يخرج حجم القائمة-- إلحاق للقائمةtable.insert(npcAttributes, "متواضع")-- طريقة أخرى...npcAttributes[#npcAttributes+1] = "متواضع"-- إدراج في بداية القائمةtable.insert(npcAttributes, 1, "شجاع")-- إزالة عنصر عند فهرس معينtable.remove(npcAttributes, 3)
الجداول ذات الفهارس العددية في C#List npcAttributes = new List{"قوي"، "ذكي"};Console.WriteLine(npcAttributes[0]); // يخرج 'قوي'Console.WriteLine(npcAttributes.Count); // يخرج حجم القائمة// إلحاق للقائمةnpcAttributes.Add("متواضع");// طريقة أخرى...npcAttributes.Insert(npcAttributes.Count, "متواضع");// إدراج في بداية القائمةnpcAttributes.Insert(0, "شجاع");// إزالة عنصر عند فهرس معينnpcAttributes.Remove(2);
العمليات
العمليات الشرطية
| المشغل | Luau | C# |
|---|---|---|
| يساوي | == | == |
| أكبر من | > | > |
| أقل من | < | < |
| أكبر من أو يساوي | >= | >= |
| أقل من أو يساوي | <= | <= |
| لا يساوي | ~= | != |
| و | and | && |
| أو | or | || |
عمليات الحساب
| Luau | C# | |
|---|---|---|
| جمع | + | + |
| طرح | - | - |
| ضرب | * | * |
| قسمة | / | / |
| المودولوس | % | % |
| رفع للسرعة | ^ | ** |
المتغيرات
في Luau، لا تحدد المتغيرات نوعها عند إعلانها. لا تمتلك متغيرات Luau محددات وصول، على الرغم من أنه يمكنك تمييز المتغيرات "الخاصة" بشرطة سفلية لسهولة القراءة.
المتغيرات في Luaulocal stringVariable = "قيمة"-- إعلان "عام"local variableName-- إعلان "خاص" - يتم تحليله بنفس الطريقةlocal _variableName
المتغيرات في C#string stringVariable = "قيمة";// إعلان عامpublic string variableName// إعلان خاصstring variableName;
النطاق
في Luau، يمكنك كتابة المتغيرات والمنطق في نطاق أكثر ضيقًا من الدالة أو الفئة عن طريق تداخل المنطق داخل كلمات do و end، مشابهًا للأقواس المعقوفة {} في C#. لمزيد من التفاصيل، انظر النطاق.
النطاق في Luaulocal outerVar = 'نص النطاق الخارجي'do-- تعديل 'outerVar'outerVar = 'نص النطاق الداخلي المعدل'-- تقديم متغير محليlocal innerVar = 'نص النطاق الداخلي'print('1: ' .. outerVar) -- يطبع "1: نص النطاق الداخلي المعدل"print('2: ' .. innerVar) -- يطبع "2: نص النطاق الداخلي"endprint('3: ' .. outerVar) -- يطبع "3: "نص النطاق الداخلي المعدل"-- محاولة طباعة 'innerVar' هنا ستفشل
النطاق في C#var outerVar = "نص النطاق الخارجي";{// تعديل 'outerVar'outerVar = "نص النطاق الداخلي المعدل";// تقديم متغير محليvar innerVar = "نص النطاق الداخلي";Console.WriteLine("1: " + outerVar); // يطبع "1: نص النطاق الداخلي المعدل"Console.WriteLine("2: " + innerVar); // يطبع "2: نص النطاق الداخلي"}Console.WriteLine("3: " + outerVar); // يطبع "3: "نص النطاق الداخلي المعدل"// محاولة طباعة 'innerVar' هنا ستفشل
العبارات الشرطية
العبارات الشرطية في Luau-- شرط واحدif boolExpression thendoSomething()end-- شروط متعددةif not boolExpression thendoSomething()elseif otherBoolExpression thendoSomething()elsedoSomething()end
العبارات الشرطية في C#// شرط واحدif (boolExpression) {doSomething();}// شروط متعددةif (!boolExpression) {doSomething();}else if (otherBoolExpression) {doSomething();}else {doSomething();}
المشغل الشرطي
المشغل الشرطي في Luaulocal max = if x > y then x else y
المشغل الشرطي في C#int max = (x > y) ? x : y;
الحلقات
لتعلم المزيد عن الحلقات في Luau، انظر الهياكل التحكمية.
حلقات While و repeat
حلقات While و Repeat في Luauwhile boolExpression dodoSomething()endrepeatdoSomething()until not boolExpression
حلقات While و Repeat في C#while (boolExpression) {doSomething();}do {doSomething();} while (boolExpression)
حلقات For
حلقات For العامة في Luau-- حلقة للأمامfor i = 1, 10 dodoSomething()end-- حلقة عكسيةfor i = 10, 1, -1 dodoSomething()end
حلقات For العامة في C#// حلقة للأمامfor (int i = 1; i <= 10; i++) {doSomething();}// حلقة عكسيةfor (int i = 10; i >= 1; i--) {doSomething();}
حلقات For على الجداول في Luaulocal abcList = {"a"، "b"، "c"}for i، v in ipairs(abcList) doprint(v)endlocal abcDictionary = { a=1، b=2، c=3 }for k، v in pairs(abcDictionary) doprint(k، v)end
حلقات For على القوائم في C#List<string> abcList = new List<string>{"a"، "b"، "c"};foreach (string v in abcList) {Console.WriteLine(v);}Dictionary<string، int> abcDictionary = new Dictionary<string، int>{ {"a"، 1}، {"b"، 2}، {"c"، 3} };foreach (KeyValuePair<string، int> entry in abcDictionary) {Console.WriteLine(entry.Key + " " + entry.Value);}
يدعم Luau أيضًا التكرار العام، مما يبسط العمل مع الجداول بشكل أكبر.
الدوال
لتعلم المزيد عن الدوال في Luau، انظر الدوال.
الدوال العامة
الدوال العامة في Luau
-- دالة عامة
local function increment(number)
return number + 1
end
الدوال العامة في C#
// دالة عامة
int increment(int number) {
return number + 1;
}
عدد المتغيرات المتغيرة
عدد المتغيرات المتغيرة في Luau
-- عدد المتغيرات المتغيرة
local function variableArguments(...)
print(...)
end
عدد المتغيرات المتغيرة في C#
// عدد المتغيرات المتغيرة
void variableArguments(params string[] inventoryItems) {
for (item in inventoryItems) {
Console.WriteLine(item);
}
}
المتغيرات المسماة
المتغيرات المسماة في Luau
-- المتغيرات المسماة
local function namedArguments(args)
return args.name .. "'s birthday: " .. args.dob
end
namedArguments{name="بوب"، dob="4/1/2000"}
المتغيرات المسماة في C#
// المتغيرات المسماة
string namedArguments(string name، string dob) {
return name + "'s birthday: " + dob;
}
namedArguments(name: "بوب"، dob: "4/1/2000");
هياكل try-catch
الهياكل try/catch في Luau
local function fireWeapon()
if not weaponEquipped then
error("لا توجد سلاح مزود!")
end
-- استمر...
end
local success، errorMessage = pcall(fireWeapon)
if not success then
print(errorMessage)
end
الهياكل try/catch في C#
void fireWeapon() {
if (!weaponEquipped) {
// استخدم استثناء معرف من قبل المستخدم
throw new InvalidWeaponException("لا توجد سلاح مزود!");
}
// استمر...
}
try {
fireWeapon();
} catch (InvalidWeaponException ex) {
// تم رفع خطأ
}