Vergleich von Luau und C#

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Roblox verwendet die Programmiersprache Luau. Die folgenden Codebeispiele und Tabellen zeigen einige der Unterschiede zwischen C#- und Luau-Skripten.

Endungen anzeigen

Du brauchst keine Semikolon in Luau, aber sie brechen dieSyntax nicht.

Reservierte Schlüsselwörter

Die folgende Tabelle zeigt die von Luau reservierten Schlüsselwörter auf ihre C#-Äquivalente. Beachten Sie, dass nicht alle C#-Schlüsselwörter angezeigt werden.

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

Kommentare

Kommentare in Luau

-- Einzeile Kommentar posten
--[[ Ergebnis:
Block comment
--]]
Comments in C#

// Single line comment
/*
Block comment
*/

Fetzen

Fetzen in Luau

-- Mehrzeilige Strings
local multiLineString = [[This is a string that,
when printed, appears
on multiple lines]]
-- Konzentration
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;

Tabellen

Um mehr über Tabellen in Luau zu erfahren, siehe Tabellen.

Wörterbücher-Tabellen

Du kannst Tabellen in Luau als Diktionen verwenden, wie in C#.

Wörterbücher-Tabellen in Luau

local dictionary = {
val1 = "this",
val2 = "is"
}
print(dictionary.val1) -- Gibt 'this' aus
print(dictionary["val1"]) -- Gibt 'this' aus
dictionary.val1 = nil -- Entfernt 'val1' von der Tabelle
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

Zahlen索ierte Tabellen

Du kannst Tabellen in Luau wie in C# als Arrays verwenden, indem du 1 in Luau und 0 in C# anfängst.

Zahlen索ierte Tabellen in Luau

local npcAttributes = {"strong", "intelligent"}
print(npcAttributes[1]) -- Outputs 'starke'
print(#npcAttributes) -- Gibt die Größe der Liste aus
-- Zur Liste hinzufügen
table.insert(npcAttributes, "humble")
-- Ein anderer Weg ...
npcAttributes[#npcAttributes+1] = "humble"
-- Am Anfang der Liste einfügen
table.insert(npcAttributes, 1, "brave")
-- Item entfernen bei einem bestimmten Index
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);

Betreiber

Bedingte Operatoren

BetreiberLuaC#
Gleich zu====
Größer als>>
Weniger als<<
Größer als oder gleich>=>=
Weniger als oder gleich<=<=
Nicht gleich zu~=!=
Undand&&
Oderor||

Arithmetische Operatoren

LuaC#
Hinzufügung++
Subtraktion--
Multiplikation**
Teilung//
Modul%%
Expansion^**

Variable

In Luau geben Variablen keine Angabe, welcher Typ sie haben, wenn Sie sie deklarieren. Luau- Variablen haben keine Zugangsmodifikatoren, obwohl Sie "privater Server" Variablen mit einem Unterstrich für Lesbarkeit vorangriffen können.

Variable in Luau

local stringVariable = "value"
-- „Öffentliche“ Erklärung
local variableName
-- „Privat“-Erklärung -gewöhnlich auf die gleiche Weise parsiert
local _variableName
Variables in C#

string stringVariable = "value";
// Public declaration
public string variableName
// Private declaration
string variableName;

Zielfernrohr

In Luau können Sie Variablen und Logik in einem engeren Umfang als ihre Funktion oder Klasse definieren, indem Sie die Logik innerhalb von do und end-Kлючеwörtern, ähnlich wie Curl-Brackets {} in C#, einfügen. Weitere Informationen finden Sie unter 1> Scope1>.

Luau-Zielfernrohr

local outerVar = 'Outer scope text'
do
-- Modifizieren Sie 'outerVar'
outerVar = 'Inner scope modified text'
-- Einführe eine lokale Variable
local innerVar = 'Inner scope text'
print('1: ' .. outerVar) -- druckt "1: Inner scope modified text"
print('2: ' .. innerVar) -- prints "2: Inner scope text"
end
print('3: ' .. outerVar) -- prints "3: "Inner scope modified text"
-- 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

Bedingte Anweisungen

Bedingte Anweisungen in Luau

-- Eine Bedingung
if boolExpression then
doSomething()
end
-- Mehrere Bedingungen
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();
}

Bedingter Operator

Bedingter Operator in Luau

local max = if x > y then x else y
Conditional Operator in C#

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

Schleifen

Um mehr über Loopings in Luau zu erfahren, siehe Kontrollstrukturen.

While und Repeat Loops

Während und Wiederholen Sie Loops in Luau

while boolExpression do
doSomething()
end
repeat
doSomething()
until not boolExpression
While and Repeat Loops in C#

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

Für Loops

Standard für Loops in Luau

-- Vorwärts-Loop
for i = 1, 10 do
doSomething()
end
-- Reverse-Loop
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();
}
Für Loops über Tables in 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 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 unterstützt auch generalisierte Iteration, was die Arbeit mit Tabellen weiter einfacht.

Funktionen

Um mehr über Funktionen in Luau zu erfahren, siehe Funktionen.

Allgemeine Funktionen

Allgemeine Funktionen in Luau

-- Generische Funktion
local function increment(number)
return number + 1
end
Generic Functions in C#

// Generic function
int increment(int number) {
return number + 1;
}

Variable Argument Nummer

Variable Argumentnumber in Luau

-- Variable Argumentnummer
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);
}
}

Argamente mit Namen

Namensargamente in Luau

-- Argamente mit Namen
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");

Versuche-Catch-Strukturen

Versuche/Fange Strukturen in Luau

local function fireWeapon()
if not weaponEquipped then
error("No weapon equipped!")
end
-- Fortfahren...
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
}