مقارنة Luau و C#

*This content is translated using AI (Beta) and may contain errors. To view this page in English, click here.

تستخدم Roblox لغة البرمجة Luau. عينات الكود والجداول التالية تشير إلى بعض الاختلافات بين نحويات C# و Luau.

نهايات السطور

لا تحتاج إلى الفواصل المنقوطة في Luau، لكن ذلك لا يكسر التركيب.

الكلمات المحجوزة

الجدول التالي يحتوي على الكلمات المحجوزة في Luau ومقابلاتها في C#. لاحظ أنه لا يظهر جميع كلمات C# المحجوزة.

LuauC#
and
breakbreak
dodo
ifif
elseelse
elseifelse if
then
end
truetrue
falsefalse
forfor أو foreach
function
inin
local
nilnull
not
or
repeat
returnreturn
until
whilewhile

التعليقات

التعليقات في 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#.

الجداول القاموسية في Luau

local 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#.

الجداول ذات الفهارس العددية في Luau

local 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);

العمليات

العمليات الشرطية

المشغلLuauC#
يساوي====
أكبر من>>
أقل من<<
أكبر من أو يساوي>=>=
أقل من أو يساوي<=<=
لا يساوي~=!=
وand&&
أوor||

عمليات الحساب

LuauC#
جمع++
طرح--
ضرب**
قسمة//
المودولوس%%
رفع للسرعة^**

المتغيرات

في Luau، لا تحدد المتغيرات نوعها عند إعلانها. لا تمتلك متغيرات Luau محددات وصول، على الرغم من أنه يمكنك تمييز المتغيرات "الخاصة" بشرطة سفلية لسهولة القراءة.

المتغيرات في Luau

local stringVariable = "قيمة"
-- إعلان "عام"
local variableName
-- إعلان "خاص" - يتم تحليله بنفس الطريقة
local _variableName
المتغيرات في C#

string stringVariable = "قيمة";
// إعلان عام
public string variableName
// إعلان خاص
string variableName;

النطاق

في Luau، يمكنك كتابة المتغيرات والمنطق في نطاق أكثر ضيقًا من الدالة أو الفئة عن طريق تداخل المنطق داخل كلمات do و end، مشابهًا للأقواس المعقوفة {} في C#. لمزيد من التفاصيل، انظر النطاق.

النطاق في Luau

local outerVar = 'نص النطاق الخارجي'
do
-- تعديل 'outerVar'
outerVar = 'نص النطاق الداخلي المعدل'
-- تقديم متغير محلي
local innerVar = 'نص النطاق الداخلي'
print('1: ' .. outerVar) -- يطبع "1: نص النطاق الداخلي المعدل"
print('2: ' .. innerVar) -- يطبع "2: نص النطاق الداخلي"
end
print('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 then
doSomething()
end
-- شروط متعددة
if not boolExpression then
doSomething()
elseif otherBoolExpression then
doSomething()
else
doSomething()
end
العبارات الشرطية في C#

// شرط واحد
if (boolExpression) {
doSomething();
}
// شروط متعددة
if (!boolExpression) {
doSomething();
}
else if (otherBoolExpression) {
doSomething();
}
else {
doSomething();
}

المشغل الشرطي

المشغل الشرطي في Luau

local max = if x > y then x else y
المشغل الشرطي في C#

int max = (x > y) ? x : y;

الحلقات

لتعلم المزيد عن الحلقات في Luau، انظر الهياكل التحكمية.

حلقات While و repeat

حلقات While و Repeat في Luau

while boolExpression do
doSomething()
end
repeat
doSomething()
until not boolExpression
حلقات While و Repeat في C#

while (boolExpression) {
doSomething();
}
do {
doSomething();
} while (boolExpression)

حلقات For

حلقات For العامة في Luau

-- حلقة للأمام
for i = 1, 10 do
doSomething()
end
-- حلقة عكسية
for i = 10, 1, -1 do
doSomething()
end
حلقات For العامة في C#

// حلقة للأمام
for (int i = 1; i <= 10; i++) {
doSomething();
}
// حلقة عكسية
for (int i = 10; i >= 1; i--) {
doSomething();
}
حلقات For على الجداول في Luau

local abcList = {"a"، "b"، "c"}
for i، v in ipairs(abcList) do
print(v)
end
local abcDictionary = { a=1، b=2، c=3 }
for k، v in pairs(abcDictionary) do
print(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) {
// تم رفع خطأ
}
©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.