Roblox, Luau programlama dili kullanır. Aşağıdaki kod örnekleri ve tabloları, C# ve Luau için kod dilindeki farklılıkların bazılarını gösterir.
Satır bitimleri
Luau'da virgül ihtiyacınız yok, ancak sentaksı bozmuyorlar.
Korunmuş anahtar kelimeler
Aşağıdaki tablo, Luau'nun rezerve edilmiş anahtar kelimelerini C# eşdeğerine haritaladı. Tüm C# anahtar kelimelerini göstermediğini unutmayın.
Luau | C# |
---|---|
and | |
break | break |
do | do |
if | if |
else | else |
elseif | else if |
then | |
end | |
true | true |
false | false |
for | for or foreach |
function | |
in | in |
local | |
nil | null |
not | |
or | |
repeat | |
return | return |
until | |
while | while |
Yorumlar
Luau'daki Yorumlar
-- Tek satır yorum--[[ Sonuç çıkışı:Block comment--]]
Comments in C#
// Single line comment/*Block comment*/
Dizeeler
Luau'daki dizeler
-- Çok satırlı dizilocal multiLineString = [[This is a string that,when printed, appearson multiple lines]]-- Katılımlocal s1 = "This is a string "local s2 = "made with two parts."local endString = s1 .. s2
Strings in C#
// Multi-line stringstring multiLineString1 = "This is a string that,\nwhen printed, appears\n on multiple lines.";string multiLineString2 = @"This is a string that,when printed, appearson multiple lines";// Concatenationstring s1 = "This is a string ";string s2 = "made with two parts.";string endString = s1 + s2;
Tablolar
Luau'daki masalar hakkında daha fazla bilgi edinmek için, Masalar bakın.
Sözlük tabloları
Luau'da sözlükler gibi C#'de olduğu gibi tabloları kullanabilirsiniz.
Luau'daki Sözlük Masaları
local dictionary = {val1 = "this",val2 = "is"}print(dictionary.val1) -- Çıktı 'bu'print(dictionary["val1"]) -- Çıktı 'bu'dictionary.val1 = nil -- Tablodan 'val1' kaldırırdictionary["val3"] = "a dictionary" -- Overwrites 'val3' or sets new key-value pair
Dictionary Tables in C#
Dictionary dictionary = new Dictionary(){{ "val1", "this" },{ "val2", "is" }};Console.WriteLine(dictionary["val1"]); // Outputs 'this'dictionary.Remove("val1"); // Removes 'val1' from dictionarydictionary["val3"] = "a dictionary"; // Overwrites 'val3' or sets new key-value pairdictionary.Add("val3", "a dictionary"); // Creates a new key-value pair
Sayısal indeksli tablolar
Luau'da tabloları C#'de olduğu gibi dize olarak kullanabilirsiniz. İndeksler Luau'da 1 'de başlar ve C#'de 0.
Luau'daki Sayısal İndeksli Masalar
local npcAttributes = {"strong", "intelligent"}print(npcAttributes[1]) -- Çıktı 'güçlü'print(#npcAttributes) -- Liste boyutunu gösterir-- Listeye eklemektable.insert(npcAttributes, "humble")-- Başka bir yol...npcAttributes[#npcAttributes+1] = "humble"-- Listenin başına ekleyintable.insert(npcAttributes, 1, "brave")-- Verilen indekste öğeyi kaldırtable.remove(npcAttributes, 3)
Numerically-Indexed Tables in C#
List npcAttributes = new List{"strong", "intelligent"};Console.WriteLine(npcAttributes[0]); // Outputs 'strong'Console.WriteLine(npcAttributes.Count); // Outputs the size of the list// Append to the listnpcAttributes.Add("humble");// Another way...npcAttributes.Insert(npcAttributes.Count, "humble");// Insert at the beginning of the listnpcAttributes.Insert(0, "brave");// Remove item at a given indexnpcAttributes.Remove(2);
Operatörler
Koşullu operatörler
Operatör | Luau | C# |
---|---|---|
Eşit Olarak | == | == |
Daha Büyük Than | > | > |
Daha Azından | < | < |
Daha Büyük veya Eşit veya | >= | >= |
Daha Az veya Eşit veya | <= | <= |
Eşit Değil To | ~= | != |
Ve | and | && |
Or | or | || |
Aritmetik operatörler
Luau | C# | |
---|---|---|
Ekleme | + | + |
Keskinleme | - | - |
Çarpanlar | * | * |
Bölüm | / | / |
Modül | % | % |
Uçbazlama | ^ | ** |
Değişkenler
Luau'da, değişkenler onları ilan ettiğinizde türünü belirtmez.Luau değişkenlerinin erişim değiştiricileri yoktur, ancak okunabilirlik için "özel" değişkenlere alt çizgi ile ekleyebilirsiniz.
Luau'daki değişkenler
local stringVariable = "value"-- “Herkese açık” ilanılocal variableName-- “Özel” ifadesi - aynı şekilde parçalandılocal _variableName
Variables in C#
string stringVariable = "value";// Public declarationpublic string variableName// Private declarationstring variableName;
Alanı
Luau'da, mantığı ve anahtarları içinde yerleştirerek fonksiyon veya sınıflarından daha sıkı bir alanda değişkenleri ve mantığı yazabilirsiniz, C#'de kıvrık parantezler gibi.Daha fazla ayrıntı için, Alan bakın.
Luau'da Sınırlama
local outerVar = 'Outer scope text'do-- Dış 'outerVar'ı modifiye etouterVar = 'Inner scope modified text'-- Yerel bir değişken tanıtınlocal innerVar = 'Inner scope text'print('1: ' .. outerVar) -- basar "1: İç ölçek değiştirilmiş metin"print('2: ' .. innerVar) -- prints "2: İçerik metni"endprint('3: ' .. outerVar) -- prints "3:" İçerik değiştirilmiş alan"-- Attempting to print 'innerVar' here would fail
Scoping in C#
var outerVar = "Outer scope text";{// Modify 'outerVar'outerVar = "Inner scope modified text";// Introduce a local variablevar innerVar = "Inner scope text";Console.WriteLine("1: " + outerVar); // prints "1: Inner scope modified text"Console.WriteLine("2: " + innerVar); // prints "2: Inner scope text"}Console.WriteLine("3: " + outerVar); // prints "3: "Inner scope modified text"// Attempting to print 'innerVar' here would fail
Koşullu ifadeler
Luau'daki koşullu ifadeler
-- Bir koşulif boolExpression thendoSomething()end-- Çok sayıda koşulif not boolExpression thendoSomething()elseif otherBoolExpression thendoSomething()elsedoSomething()end
Conditional Statements in C#
// One conditionif (boolExpression) {doSomething();}// Multiple conditionsif (!boolExpression) {doSomething();}else if (otherBoolExpression) {doSomething();}else {doSomething();}
Koşullu operatör
Luau'daki koşullu operatör
local max = if x > y then x else y
Conditional Operator in C#
int max = (x > y) ? x : y;
Döngüler
Luau'daki döngüler hakkında daha fazla bilgi edinmek için Kontrol Yapıları bakın.
While ve tekrar döngüleri
Luau'da While ve Tekrarlayan Döngüler
while boolExpression dodoSomething()endrepeatdoSomething()until not boolExpression
While and Repeat Loops in C#
while (boolExpression) {doSomething();}do {doSomething();} while (boolExpression)
Döngüler için
Luau'daki Döngüler için Genel
-- İleri döngüfor i = 1, 10 dodoSomething()end-- Ters döngüfor i = 10, 1, -1 dodoSomething()end
Generic For Loops in C#
// Forward loopfor (int i = 1; i <= 10; i++) {doSomething();}// Reverse loopfor (int i = 10; i >= 1; i--) {doSomething();}
Luau'daki Masalar Üzerinde Döngüler için
local 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 Loops Over Lists in 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 ayrıca genelleştirilmiş döngü destekler, bu da tablolarla çalışmayı daha da basitleştirir.
Fonksiyonlar
Luau'daki işlevler hakkında daha fazla bilgi edinmek için İşlevler bakın.
Genel işlevler
Luau'daki Genel Fonksiyonlar
-- Genel işlev
local function increment(number)
return number + 1
end
Generic Functions in C#
// Generic function
int increment(int number) {
return number + 1;
}
Değişken argüman sayısı
Luau'daki Değişken Argüman Sayısı
-- Değişken argüman sayısı
local function variableArguments(...)
print(...)
end
Variable Argument Number in C#
// Variable argument number
void variableArguments(params string[] inventoryItems) {
for (item in inventoryItems) {
Console.WriteLine(item);
}
}
İsimli argümanlar
Luau'da Adlandırılmış Argümanlar
-- İsimli argümanlar
local function namedArguments(args)
return args.name .. "'s birthday: " .. args.dob
end
namedArguments{name="Bob", dob="4/1/2000"}
Named Arguments in C#
// Named arguments
string namedArguments(string name, string dob) {
return name + "'s birthday: " + dob;
}
namedArguments(name: "Bob", dob: "4/1/2000");
Dene-yakala yapıları
Luau'da Deney/Yakalama Yapılarını Deneyin
local function fireWeapon()
if not weaponEquipped then
error("No weapon equipped!")
end
-- Devam et...
end
local success, errorMessage = pcall(fireWeapon)
if not success then
print(errorMessage)
end
Try/Catch Structures in C#
void fireWeapon() {
if (!weaponEquipped) {
// Use a user-defined exception
throw new InvalidWeaponException("No weapon equipped!");
}
// Proceed...
}
try {
fireWeapon();
} catch (InvalidWeaponException ex) {
// An error was raised
}