Luau ve C# karşılaştırması

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

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.

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

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ı string
local multiLineString = [[Bu bir string,
yazdırıldığında,
birden fazla satırda görünür]]
-- Birleştirme
local s1 = "Bu bir string "
local s2 = "iki parçadan oluşmuş."
local endString = s1 .. s2
C#'da Stringler

// Çok satırlı string
string 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ştirme
string 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ır
print(dictionary["val1"]) -- 'bu' değerini yazdırır
dictionary.val1 = nil -- 'val1' değerini tablodan kaldırır
dictionary["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ır
dictionary.Remove("val1"); // 'val1' değerini sözlükten kaldırır
dictionary["val3"] = "bir sözlük"; // 'val3'ü üzerine yazar veya yeni anahtar-değer çifti ekler
dictionary.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 Tablolar

local npcAttributes = {"güçlü", "zeki"}
print(npcAttributes[1]) -- 'güçlü' değerini yazdırır
print(#npcAttributes) -- listenin boyutunu yazdırır
-- Listeye ekle
table.insert(npcAttributes, "alçakgönüllü")
-- Başka bir yol...
npcAttributes[#npcAttributes+1] = "alçakgönüllü"
-- Listenin başına ekle
table.insert(npcAttributes, 1, "cesur")
-- Belirli bir indeksdeki öğeyi kaldır
table.remove(npcAttributes, 3)
C#'da Sayısal İndeksli Tablolar

List npcAttributes = new List{"güçlü", "zeki"};
Console.WriteLine(npcAttributes[0]); // 'güçlü' değerini yazdırır
Console.WriteLine(npcAttributes.Count); // listenin boyutunu yazdırır
// Listeye ekle
npcAttributes.Add("alçakgönüllü");
// Başka bir yol...
npcAttributes.Insert(npcAttributes.Count, "alçakgönüllü");
// Listenin başına ekle
npcAttributes.Insert(0, "cesur");
// Belirli bir indeksdeki öğeyi kaldır
npcAttributes.Remove(2);

Operatörler

Koşullu operatörler

OperatörLuauC#
Esit====
Büyüktür>>
Küçüktür<<
Büyük veya Eşit>=>=
Küçük veya Eşit<=<=
Eşit Değildir~=!=
Veand&&
Veyaor||

Aritmetik operatörler

LuauC#
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şkenler

local stringVariable = "değer"
-- "Genel" tanım
local variableName
-- "Özel" tanım - aynı şekilde işlenir
local _variableName
C#'da Değişkenler

string stringVariable = "değer";
// Genel tanım
public string variableName
// Özel tanım
string 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 Kapsam

local outerVar = 'Dış kapsam metni'
do
-- 'outerVar' değişkenini değiştir
outerVar = 'İç kapsam değiştirilmiş metin'
-- Yerel bir değişken tanıt
local innerVar = 'İç kapsam metni'
print('1: ' .. outerVar) -- "1: İç kapsam değiştirilmiş metin" yazdırır
print('2: ' .. innerVar) -- "2: İç kapsam metni" yazdırır
end
print('3: ' .. outerVar) -- "3: İç kapsam değiştirilmiş metin" yazdırır
-- Burada 'innerVar' yazdırmaya çalışmak başarısız olur
C#'da Kapsam

var outerVar = "Dış kapsam metni";
{
// 'outerVar' değişkenini değiştir
outerVar = "İç kapsam değiştirilmiş metin";
// Yerel bir değişken tanıt
var innerVar = "İç kapsam metni";
Console.WriteLine("1: " + outerVar); // "1: İç kapsam değiştirilmiş metin" yazdırır
Console.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şul
if boolExpression then
doSomething()
end
-- Birden fazla koşul
if not boolExpression then
doSomething()
elseif otherBoolExpression then
doSomething()
else
doSomething()
end
C#'da Koşullu İfadeler

// Tek bir koşul
if (boolExpression) {
doSomething();
}
// Birden fazla koşul
if (!boolExpression) {
doSomething();
}
else if (otherBoolExpression) {
doSomething();
}
else {
doSomething();
}

Koşullu operatör

Luau'da Koşullu Operatör

local max = if x > y then x else y
C#'da Koşullu Operatör

int 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üleri

while boolExpression do
doSomething()
end
repeat
doSomething()
until not boolExpression
C#'da While ve Repeat Döngüleri

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

For döngüleri

Luau'da Genel For Döngüleri

-- İleri döngü
for i = 1, 10 do
doSomething()
end
-- Ters döngü
for i = 10, 1, -1 do
doSomething()
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üleri

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
C#'da Listeler Üzerinde For Döngüleri

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, 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
}
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.