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

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

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ı dizi
local multiLineString = [[This is a string that,
when printed, appears
on multiple lines]]
-- Katılım
local s1 = "This is a string "
local s2 = "made with two parts."
local endString = s1 .. s2
Strings in C#

// Multi-line string
string multiLineString1 = "This is a string that,\nwhen printed, appears\n on multiple lines.";
string multiLineString2 = @"This is a string that,
when printed, appears
on multiple lines";
// Concatenation
string 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ır
dictionary["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 dictionary
dictionary["val3"] = "a dictionary"; // Overwrites 'val3' or sets new key-value pair
dictionary.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 eklemek
table.insert(npcAttributes, "humble")
-- Başka bir yol...
npcAttributes[#npcAttributes+1] = "humble"
-- Listenin başına ekleyin
table.insert(npcAttributes, 1, "brave")
-- Verilen indekste öğeyi kaldır
table.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 list
npcAttributes.Add("humble");
// Another way...
npcAttributes.Insert(npcAttributes.Count, "humble");
// Insert at the beginning of the list
npcAttributes.Insert(0, "brave");
// Remove item at a given index
npcAttributes.Remove(2);

Operatörler

Koşullu operatörler

OperatörLuauC#
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~=!=
Veand&&
Oror||

Aritmetik operatörler

LuauC#
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 declaration
public string variableName
// Private declaration
string 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 et
outerVar = 'Inner scope modified text'
-- Yerel bir değişken tanıtın
local innerVar = 'Inner scope text'
print('1: ' .. outerVar) -- basar "1: İç ölçek değiştirilmiş metin"
print('2: ' .. innerVar) -- prints "2: İçerik metni"
end
print('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 variable
var 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şul
if boolExpression then
doSomething()
end
-- Çok sayıda koşul
if not boolExpression then
doSomething()
elseif otherBoolExpression then
doSomething()
else
doSomething()
end
Conditional Statements in C#

// One condition
if (boolExpression) {
doSomething();
}
// Multiple conditions
if (!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 do
doSomething()
end
repeat
doSomething()
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 do
doSomething()
end
-- Ters döngü
for i = 10, 1, -1 do
doSomething()
end
Generic For Loops in C#

// Forward loop
for (int i = 1; i <= 10; i++) {
doSomething();
}
// Reverse loop
for (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) do
print(v)
end
local abcDictionary = { a=1, b=2, c=3 }
for k, v in pairs(abcDictionary) do
print(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
}