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.
Lua | C# |
---|---|
and | |
break | break |
do | do |
if | if |
else | else |
elseif | else if |
then | |
end | |
true | true |
false | false |
for | for oder foreach |
function | |
in | in |
local | |
nil | null |
not | |
or | |
repeat | |
return | return |
until | |
while | while |
Kommentare
Kommentare in Luau
-- Einzeile Kommentar posten--[[ Ergebnis:Block comment--]]
Comments in C#
// Single line comment/*Block comment*/
Fetzen
Fetzen in Luau
-- Mehrzeilige Stringslocal multiLineString = [[This is a string that,when printed, appearson multiple lines]]-- Konzentrationlocal 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;
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' ausprint(dictionary["val1"]) -- Gibt 'this' ausdictionary.val1 = nil -- Entfernt 'val1' von der Tabelledictionary["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
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ügentable.insert(npcAttributes, "humble")-- Ein anderer Weg ...npcAttributes[#npcAttributes+1] = "humble"-- Am Anfang der Liste einfügentable.insert(npcAttributes, 1, "brave")-- Item entfernen bei einem bestimmten Indextable.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);
Betreiber
Bedingte Operatoren
Betreiber | Lua | C# |
---|---|---|
Gleich zu | == | == |
Größer als | > | > |
Weniger als | < | < |
Größer als oder gleich | >= | >= |
Weniger als oder gleich | <= | <= |
Nicht gleich zu | ~= | != |
Und | and | && |
Oder | or | || |
Arithmetische Operatoren
Lua | C# | |
---|---|---|
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ärunglocal variableName-- „Privat“-Erklärung -gewöhnlich auf die gleiche Weise parsiertlocal _variableName
Variables in C#
string stringVariable = "value";// Public declarationpublic string variableName// Private declarationstring 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 Variablelocal innerVar = 'Inner scope text'print('1: ' .. outerVar) -- druckt "1: Inner scope modified text"print('2: ' .. innerVar) -- prints "2: Inner scope text"endprint('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 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
Bedingte Anweisungen
Bedingte Anweisungen in Luau
-- Eine Bedingungif boolExpression thendoSomething()end-- Mehrere Bedingungenif 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();}
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 dodoSomething()endrepeatdoSomething()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-Loopfor i = 1, 10 dodoSomething()end-- Reverse-Loopfor 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();}
Für Loops über Tables in Luau
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 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
}