Roblox, Luau programlama dilini kullanıyor. Aşağıdaki kod örnekleri ve tablolar, C# ve Luau'nın sözdizimi arasındaki bazı farklılıkları göstermektedir.
Satır sonları
Luau'da noktalı virgüllere ihtiyacınız yok, ancak onlar sözdizimini bozmaz.
Ayrılmış anahtar kelimeler
Aşağıdaki tabloda Luau'nun ayrılmış anahtar kelimeleri, C# eşdeğerleriyle eşleştirilmiştir. Tüm C# anahtar kelimelerinin gösterilmediğ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 veya foreach |
| function | |
| in | in |
| local | |
| nil | null |
| not | |
| or | |
| repeat | |
| return | return |
| until | |
| while | while |
Yorumlar
Luau'da Yorumlar-- Tek satırlık yorum--[[ Çıktı:Blok yorumu--]]
C#'da Yorumlar// Tek satırlık yorum/*Blok yorumu*/
Stringler
Luau'da Stringler-- Çok satırlı stringlocal multiLineString = [[Bu bir string,yazdırıldığında,birden fazla satırda görünür]]-- Birleştirmelocal s1 = "Bu bir string "local s2 = "iki parçadan oluşmuş."local endString = s1 .. s2
C#'da Stringler// Çok satırlı stringstring multiLineString1 = "Bu bir string,\n yazdırıldığında,\nbirden fazla satırda görünür.";string multiLineString2 = @"Bu bir string,yazdırıldığında,birden fazla satırda görünür";// Birleştirmestring s1 = "Bu bir string ";string s2 = "iki parçadan oluşmuş.";string endString = s1 + s2;
Tablolar
Luau'daki tablolar hakkında daha fazla bilgi için Tablolar sayfasına bakın.
Sözlük tabloları
Luau'daki tabloları C#'daki gibi sözlükler olarak kullanabilirsiniz.
Luau'da Sözlük Tablolarılocal dictionary = {val1 = "bu",val2 = "şu"}print(dictionary.val1) -- 'bu' değerini yazdırırprint(dictionary["val1"]) -- 'bu' değerini yazdırırdictionary.val1 = nil -- 'val1' değerini tablodan kaldırırdictionary["val3"] = "bir sözlük" -- 'val3'ü üzerine yazar veya yeni anahtar-değer çifti ekler
C#'da Sözlük TablolarıDictionary dictionary = new Dictionary(){{ "val1", "bu" },{ "val2", "şu" }};Console.WriteLine(dictionary["val1"]); // 'bu' değerini yazdırırdictionary.Remove("val1"); // 'val1' değerini sözlükten kaldırırdictionary["val3"] = "bir sözlük"; // 'val3'ü üzerine yazar veya yeni anahtar-değer çifti eklerdictionary.Add("val3", "bir sözlük"); // Yeni bir anahtar-değer çifti oluşturur
Sayısal indeksli tablolar
Luau'daki tabloları C#'daki gibi diziler olarak kullanabilirsiniz. İndeksler Luau'da 1'den ve C#'da 0'dan başlar.
Luau'da Sayısal İndeksli Tablolarlocal npcAttributes = {"güçlü", "zeki"}print(npcAttributes[1]) -- 'güçlü' değerini yazdırırprint(#npcAttributes) -- listenin boyutunu yazdırır-- Listeye ekletable.insert(npcAttributes, "alçakgönüllü")-- Başka bir yol...npcAttributes[#npcAttributes+1] = "alçakgönüllü"-- Listenin başına ekletable.insert(npcAttributes, 1, "cesur")-- Belirli bir indeksdeki öğeyi kaldırtable.remove(npcAttributes, 3)
C#'da Sayısal İndeksli TablolarList npcAttributes = new List{"güçlü", "zeki"};Console.WriteLine(npcAttributes[0]); // 'güçlü' değerini yazdırırConsole.WriteLine(npcAttributes.Count); // listenin boyutunu yazdırır// Listeye eklenpcAttributes.Add("alçakgönüllü");// Başka bir yol...npcAttributes.Insert(npcAttributes.Count, "alçakgönüllü");// Listenin başına eklenpcAttributes.Insert(0, "cesur");// Belirli bir indeksdeki öğeyi kaldırnpcAttributes.Remove(2);
Operatörler
Koşullu operatörler
| Operatör | Luau | C# |
|---|---|---|
| Esit | == | == |
| Büyüktür | > | > |
| Küçüktür | < | < |
| Büyük veya Eşit | >= | >= |
| Küçük veya Eşit | <= | <= |
| Eşit Değildir | ~= | != |
| Ve | and | && |
| Veya | or | || |
Aritmetik operatörler
| Luau | C# | |
|---|---|---|
| Toplama | + | + |
| Çıkarma | - | - |
| Çarpma | * | * |
| Bölme | / | / |
| Mod | % | % |
| Üslü | ^ | ** |
Değişkenler
Luau'da, değişkenleri tanımlarken türlerini belirtmezsiniz. Luau değişkenlerinin erişim belirteçleri yoktur, ancak "özel" değişkenlerinizi okunabilirlik için bir alt çizgi ile öne ekleyebilirsiniz.
Luau'da Değişkenlerlocal stringVariable = "değer"-- "Genel" tanımlocal variableName-- "Özel" tanım - aynı şekilde işlenirlocal _variableName
C#'da Değişkenlerstring stringVariable = "değer";// Genel tanımpublic string variableName// Özel tanımstring variableName;
Kapsam
Luau'da, değişkenleri ve mantığı, do ve end anahtar kelimeleri içinde iç içe yazarak, işlev veya sınıfından daha sıkı bir kapsamda yazabilirsiniz. Bu, C#'daki süslü parantezler {} gibi çalışır. Daha fazla ayrıntı için Kapsam sayfasına bakın.
Luau'da Kapsamlocal outerVar = 'Dış kapsam metni'do-- 'outerVar' değişkenini değiştirouterVar = 'İç kapsam değiştirilmiş metin'-- Yerel bir değişken tanıtlocal innerVar = 'İç kapsam metni'print('1: ' .. outerVar) -- "1: İç kapsam değiştirilmiş metin" yazdırırprint('2: ' .. innerVar) -- "2: İç kapsam metni" yazdırırendprint('3: ' .. outerVar) -- "3: İç kapsam değiştirilmiş metin" yazdırır-- Burada 'innerVar' yazdırmaya çalışmak başarısız olur
C#'da Kapsamvar outerVar = "Dış kapsam metni";{// 'outerVar' değişkenini değiştirouterVar = "İç kapsam değiştirilmiş metin";// Yerel bir değişken tanıtvar innerVar = "İç kapsam metni";Console.WriteLine("1: " + outerVar); // "1: İç kapsam değiştirilmiş metin" yazdırırConsole.WriteLine("2: " + innerVar); // "2: İç kapsam metni" yazdırır}Console.WriteLine("3: " + outerVar); // "3: İç kapsam değiştirilmiş metin" yazdırır// Burada 'innerVar' yazdırmaya çalışmak başarısız olur
Koşullu ifadeler
Luau'da Koşullu İfadeler-- Tek bir koşulif boolExpression thendoSomething()end-- Birden fazla koşulif not boolExpression thendoSomething()elseif otherBoolExpression thendoSomething()elsedoSomething()end
C#'da Koşullu İfadeler// Tek bir koşulif (boolExpression) {doSomething();}// Birden fazla koşulif (!boolExpression) {doSomething();}else if (otherBoolExpression) {doSomething();}else {doSomething();}
Koşullu operatör
Luau'da Koşullu Operatörlocal max = if x > y then x else y
C#'da Koşullu Operatörint max = (x > y) ? x : y;
Döngüler
Luau'daki döngüler hakkında daha fazla bilgi için Kontrol Yapıları sayfasına bakın.
While ve repeat döngüleri
Luau'da While ve Repeat Döngüleriwhile boolExpression dodoSomething()endrepeatdoSomething()until not boolExpression
C#'da While ve Repeat Döngüleriwhile (boolExpression) {doSomething();}do {doSomething();} while (boolExpression)
For döngüleri
Luau'da Genel For Döngüleri-- İleri döngüfor i = 1, 10 dodoSomething()end-- Ters döngüfor i = 10, 1, -1 dodoSomething()end
C#'da Genel For Döngüleri// İleri döngüfor (int i = 1; i <= 10; i++) {doSomething();}// Ters döngüfor (int i = 10; i >= 1; i--) {doSomething();}
Luau'da Tablolar Üzerinde For Döngülerilocal 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
C#'da Listeler Üzerinde For DöngüleriList<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, tablolar ile çalışmayı daha da basitleştiren genelleştirilmiş yineleme desteğine sahiptir.
Fonksiyonlar
Luau'daki fonksiyonlar hakkında daha fazla bilgi için Fonksiyonlar sayfasına bakın.
Genel fonksiyonlar
Luau'da Genel Fonksiyonlar
-- Genel fonksiyon
local function increment(number)
return number + 1
end
C#'da Genel Fonksiyonlar
// Genel fonksiyon
int increment(int number) {
return number + 1;
}
Değişken argüman sayısı
Luau'da Değişken Argüman Sayısı
-- Değişken argüman sayısı
local function variableArguments(...)
print(...)
end
C#'da Değişken Argüman Sayısı
// Değişken argüman sayısı
void variableArguments(params string[] inventoryItems) {
for (item in inventoryItems) {
Console.WriteLine(item);
}
}
İsimli argümanlar
Luau'da İsimli Argümanlar
-- İsimli argümanlar
local function namedArguments(args)
return args.name .. "'ın doğum günü: " .. args.dob
end
namedArguments{name="Bob", dob="4/1/2000"}
C#'da İsimli Argümanlar
// İsimli argümanlar
string namedArguments(string name, string dob) {
return name + "'ın doğum günü: " + dob;
}
namedArguments(name: "Bob", dob: "4/1/2000");
Try-catch yapıları
Luau'da Try/Catch Yapıları
local function fireWeapon()
if not weaponEquipped then
error("Silah takılı değil!")
end
-- Devam et...
end
local success, errorMessage = pcall(fireWeapon)
if not success then
print(errorMessage)
end
C#'da Try/Catch Yapıları
void fireWeapon() {
if (!weaponEquipped) {
// Kullanıcı tanımlı bir istisna kullan
throw new InvalidWeaponException("Silah takılı değil!");
}
// Devam et...
}
try {
fireWeapon();
} catch (InvalidWeaponException ex) {
// Bir hata oluştu
}