Roblox usa il linguaggio di programmazione Luau. I seguenti esempi di codice e tabelle mostrano alcune delle differenze tra le sintassi per C# e Luau.
Fine linea
Non hai bisogno dei punti virgola in Luau, ma non rompono la sintassi.
Parole chiave riservate
La seguente tabella ha le parole chiave di Luau mappate alle loro equivalenti C#. Notate che non mostra tutte le parole chiave C#.
Lua | C# |
---|---|
and | |
break | break |
do | do |
if | if |
else | else |
elseif | else if |
then | |
end | |
true | true |
false | false |
for | for o foreach |
function | |
in | in |
local | |
nil | null |
not | |
or | |
repeat | |
return | return |
until | |
while | while |
Commenti
Commenti in Luau
-- Commentaredi riga singola--[[ Risultato di Output:Block comment--]]
Comments in C#
// Single line comment/*Block comment*/
Stringhe
Stringhe in Luau
-- Stringa multi-linealocal multiLineString = [[This is a string that,when printed, appearson multiple lines]]-- Concatenazionelocal 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;
Tabelle
Per saperne di più sui tabel in Luau, vedi Tabelle .
Tabelle di dizionario
Puoi usare le tabelle in Luau come dizionari come in C#.
Tabelle della dizionaria in Luau
local dictionary = {val1 = "this",val2 = "is"}print(dictionary.val1) -- Outputs 'this'print(dictionary["val1"]) -- Outputs 'this'dictionary.val1 = nil -- Rimuove 'val1' dalla tabelladictionary["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
Tabelle Numero-Indizzate
Puoi usare le tabelle in Luau come array proprio come in C#. Gli indici iniziano a 1 in Luau e 0 in C#.
Tabelle numericamente indizzate in Luau
local npcAttributes = {"strong", "intelligent"}print(npcAttributes[1]) -- Output 'strong'print(#npcAttributes) -- Outputs la dimensione della lista-- Aggiungi alla listatable.insert(npcAttributes, "humble")-- Un altro modo...npcAttributes[#npcAttributes+1] = "humble"-- Inserisci all'inizio della listatable.insert(npcAttributes, 1, "brave")-- Rimuovi un elemento a un determinato indicetable.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);
Operatori
Operatori Condizionali
Operatore | Lua | C# |
---|---|---|
Uguale a | == | == |
Superiore a | > | > |
Meno di | < | < |
Superiore a o uguale a | >= | >= |
Menosso o uguale a | <= | <= |
Non uguale a | ~= | != |
E | and | && |
O | or | || |
Operatori aritmetici
Lua | C# | |
---|---|---|
Aggiungere | + | + |
Sottrazione | - | - |
Moltiplicazione | * | * |
Divisione | / | / |
Modulo | % | % |
Esponenzione | ^ | ** |
Variabili
In Luau, le variabili non specificano il loro tipo quando le dichiari. Le variabili Luau non hanno modificatori di accesso, anche se potresti prefissare "Server privato" alle variabili con uno slash per la leggibilità.
Variabili in Luau
local stringVariable = "value"-- Dichiarazione "pubblica"local variableName-- Dichiarazione "privata" -interpretata allo stesso modolocal _variableName
Variables in C#
string stringVariable = "value";// Public declarationpublic string variableName// Private declarationstring variableName;
Scopo
In Luau, puoi scrivere le variabili e la logica in un raggio più strettamente rispetto alla loro funzione o classe facendo in modo che la logica sia nascosta all'interno di do e end parole chiave, simili ai curly brackets {} in C#. Per ulteriori dettagli, vedi 1> Scope1> .
Scopando in Luau
local outerVar = 'Outer scope text'do-- Modifica 'outerVar'outerVar = 'Inner scope modified text'-- Introduci una variabile localelocal innerVar = 'Inner scope text'print('1: ' .. outerVar) -- prints "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
Affermazioni condizionali
Affermazioni condizionali in Luau
-- Una condizioneif boolExpression thendoSomething()end-- Più di una condizioneif 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();}
Operatore Condizionale
Operatore Condizionale in Luau
local max = if x > y then x else y
Conditional Operator in C#
int max = (x > y) ? x : y;
Loop
Per saperne di più sui loop in Luau, vedi Strutture di controllo .
While e Repeat Loops
While e Repeat Loops in Luau
while boolExpression dodoSomething()endrepeatdoSomething()until not boolExpression
While and Repeat Loops in C#
while (boolExpression) {doSomething();}do {doSomething();} while (boolExpression)
Per i loop
Generico per i loop in Luau
-- Ciclo di avantifor i = 1, 10 dodoSomething()end-- Ritorno del 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();}
Per i loop sui tabelle 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 supporta anche iterazione generalizzata , che ulteriormente semplifica il lavoro con le tabelle.
Funzioni
Per saperne di più sui funzioni in Luau, vedi Funzioni .
Funzioni generiche
Funzioni generiche in Luau
-- Funzione generica
local function increment(number)
return number + 1
end
Generic Functions in C#
// Generic function
int increment(int number) {
return number + 1;
}
Numero di argomento variabile
Numero di argomento variabile in Luau
-- Numero di argomento variabile
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);
}
}
Argomenti Nome
Argomenti nominati in Luau
-- Argomenti nominati
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");
Strutture di prova
Prova/Cattura Strutture in Luau
local function fireWeapon()
if not weaponEquipped then
error("No weapon equipped!")
end
-- Procedi...
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
}