Confronto tra Luau e C#

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Roblox utilizza il linguaggio di programmazione Luau. I seguenti esempi di codice e tabelle indicano alcune delle differenze tra le sintassi per C# e Luau.

Fine riga

Non hai bisogno di punti e virgola in Luau, ma non rompono la sintassi.

Parole riservate

La seguente tabella mostra le parole riservate di Luau mappate ai loro equivalenti in C#. Nota che non mostra tutte le parole chiave di C#.

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

Commenti

Commenti in Luau

-- Commento su una sola riga
--[[ Risultato dell'output:
Commento su più righe
--]]
Commenti in C#

// Commento su una sola riga
/*
Commento su più righe
*/

Stringhe

Stringhe in Luau

-- Stringa su più righe
local multiLineString = [[Questa è una stringa che,
quando stampata, appare
su più righe]]
-- Concatenazione
local s1 = "Questa è una stringa "
local s2 = "composta da due parti."
local endString = s1 .. s2
Stringhe in C#

// Stringa su più righe
string multiLineString1 = "Questa è una stringa che,\nquando stampata, appare\n su più righe.";
string multiLineString2 = @"Questa è una stringa che,
quando stampata, appare
su più righe";
// Concatenazione
string s1 = "Questa è una stringa ";
string s2 = "composta da due parti.";
string endString = s1 + s2;

Tabelle

Per saperne di più sulle tabelle in Luau, vedere Tabelle.

Tabelle dizionario

Puoi usare le tabelle in Luau come dizionari proprio come in C#.

Tabelle Dizionario in Luau

local dictionary = {
val1 = "questo",
val2 = "è"
}
print(dictionary.val1) -- Stampa 'questo'
print(dictionary["val1"]) -- Stampa 'questo'
dictionary.val1 = nil -- Rimuove 'val1' dalla tabella
dictionary["val3"] = "un dizionario" -- Sovrascrive 'val3' o imposta un nuovo paio chiave-valore
Tabelle Dizionario in C#

Dictionary dictionary = new Dictionary()
{
{ "val1", "questo" },
{ "val2", "è" }
};
Console.WriteLine(dictionary["val1"]); // Stampa 'questo'
dictionary.Remove("val1"); // Rimuove 'val1' dal dizionario
dictionary["val3"] = "un dizionario"; // Sovrascrive 'val3' o imposta un nuovo paio chiave-valore
dictionary.Add("val3", "un dizionario"); // Crea un nuovo paio chiave-valore

Tabelle indicizzate numericamente

Puoi usare le tabelle in Luau come array proprio come in C#. Gli indici partono da 1 in Luau e 0 in C#.

Tabelle Indicizzate Numericamente in Luau

local npcAttributes = {"forte", "intelligente"}
print(npcAttributes[1]) -- Stampa 'forte'
print(#npcAttributes) -- Stampa la dimensione dell'elenco
-- Aggiungi alla lista
table.insert(npcAttributes, "umile")
-- Un altro modo...
npcAttributes[#npcAttributes+1] = "umile"
-- Inserisci all'inizio della lista
table.insert(npcAttributes, 1, "coraggioso")
-- Rimuovi l'elemento a un dato indice
table.remove(npcAttributes, 3)
Tabelle Indicizzate Numericamente in C#

List npcAttributes = new List{"forte", "intelligente"};
Console.WriteLine(npcAttributes[0]); // Stampa 'forte'
Console.WriteLine(npcAttributes.Count); // Stampa la dimensione dell'elenco
// Aggiungi alla lista
npcAttributes.Add("umile");
// Un altro modo...
npcAttributes.Insert(npcAttributes.Count, "umile");
// Inserisci all'inizio della lista
npcAttributes.Insert(0, "coraggioso");
// Rimuovi l'elemento a un dato indice
npcAttributes.Remove(2);

Operatori

Operatori condizionali

OperatoreLuauC#
Uguale a====
Maggiore di>>
Minore di<<
Maggiore o uguale a>=>=
Minore o uguale a<=<=
Non uguale a~=!=
Eand&&
Oor||

Operatori aritmetici

LuauC#
Somma++
Soutrazione--
Moltiplicazione**
Divisione//
Modulo%%
Esponenziazione^**

Variabili

In Luau, le variabili non specificano il loro tipo quando le dichiari. Le variabili Luau non hanno modificatori di accesso, anche se puoi anteporre "private" alle variabili con un underscore per leggibilità.

Variabili in Luau

local stringVariable = "valore"
-- Dichiarazione "Pubblica"
local variableName
-- Dichiarazione "Privata" - analizzata allo stesso modo
local _variableName
Variabili in C#

string stringVariable = "valore";
// Dichiarazione pubblica
public string variableName;
// Dichiarazione privata
string variableName;

Scopo

In Luau, puoi scrivere variabili e logica in uno scopo più ristretto rispetto alla loro funzione o classe annidando la logica all'interno delle parole chiave do e end, simile alle parentesi graffe {} in C#. Per ulteriori dettagli, vedere Scopo.

Scoping in Luau

local outerVar = 'Testo di ambito esterno'
do
-- Modifica 'outerVar'
outerVar = 'Testo modificato dell\'ambito interno'
-- Introduci una variabile locale
local innerVar = 'Testo di ambito interno'
print('1: ' .. outerVar) -- stampa "1: Testo modificato dell'ambito interno"
print('2: ' .. innerVar) -- stampa "2: Testo di ambito interno"
end
print('3: ' .. outerVar) -- stampa "3: "Testo modificato dell'ambito interno"
-- Tentare di stampare 'innerVar' qui fallirebbe
Scoping in C#

var outerVar = "Testo di ambito esterno";
{
// Modifica 'outerVar'
outerVar = "Testo modificato dell'ambito interno";
// Introduci una variabile locale
var innerVar = "Testo di ambito interno";
Console.WriteLine("1: " + outerVar); // stampa "1: Testo modificato dell'ambito interno"
Console.WriteLine("2: " + innerVar); // stampa "2: Testo di ambito interno"
}
Console.WriteLine("3: " + outerVar); // stampa "3: "Testo modificato dell'ambito interno"
// Tentare di stampare 'innerVar' qui fallirebbe

Dichiarazioni condizionali

Dichiarazioni Condizionali in Luau

-- Una condizione
if boolExpression then
doSomething()
end
-- Più condizioni
if not boolExpression then
doSomething()
elseif otherBoolExpression then
doSomething()
else
doSomething()
end
Dichiarazioni Condizionali in C#

// Una condizione
if (boolExpression) {
doSomething();
}
// Più condizioni
if (!boolExpression) {
doSomething();
}
else if (otherBoolExpression) {
doSomething();
}
else {
doSomething();
}

Operatore condizionale

Operatore Condizionale in Luau

local max = if x > y then x else y
Operatore Condizionale in C#

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

Cicli

Per saperne di più sui cicli in Luau, vedere Strutture di Controllo.

Cicli while e repeat

Cicli While e Repeat in Luau

while boolExpression do
doSomething()
end
repeat
doSomething()
until not boolExpression
Cicli While e Repeat in C#

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

Cicli for

Cicli For Generici in Luau

-- Ciclo in avanti
for i = 1, 10 do
doSomething()
end
-- Ciclo inverso
for i = 10, 1, -1 do
doSomething()
end
Cicli For Generici in C#

// Ciclo in avanti
for (int i = 1; i <= 10; i++) {
doSomething();
}
// Ciclo inverso
for (int i = 10; i >= 1; i--) {
doSomething();
}
Cicli For sulle Tabelle 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
Cicli For sulle Liste 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 semplifica ulteriormente il lavoro con le tabelle.

Funzioni

Per saperne di più sulle funzioni in Luau, vedere Funzioni.

Funzioni generiche

Funzioni Generiche in Luau

-- Funzione generica
local function increment(number)
return number + 1
end
Funzioni Generiche in C#

// Funzione generica
int increment(int number) {
return number + 1;
}

Numero di argomenti variabili

Numero di Argomenti Variabili in Luau

-- Numero di argomenti variabili
local function variableArguments(...)
print(...)
end
Numero di Argomenti Variabili in C#

// Numero di argomenti variabili
void variableArguments(params string[] inventoryItems) {
for (item in inventoryItems) {
Console.WriteLine(item);
}
}

Argomenti nominativi

Argomenti Nominativi in Luau

-- Argomenti nominativi
local function namedArguments(args)
return args.name .. "'s compleanno: " .. args.dob
end
namedArguments{name="Bob", dob="1/4/2000"}
Argomenti Nominativi in C#

// Argomenti nominativi
string namedArguments(string name, string dob) {
return name + "'s compleanno: " + dob;
}
namedArguments(name: "Bob", dob: "1/4/2000");

Strutture try-catch

Strutture Try/Catch in Luau

local function fireWeapon()
if not weaponEquipped then
error("Nessuna arma equipaggiata!")
end
-- Procedi...
end
local success, errorMessage = pcall(fireWeapon)
if not success then
print(errorMessage)
end
Strutture Try/Catch in C#

void fireWeapon() {
if (!weaponEquipped) {
// Usa un'eccezione definita dall'utente
throw new InvalidWeaponException("Nessuna arma equipaggiata!");
}
// Procedi...
}
try {
fireWeapon();
} catch (InvalidWeaponException ex) {
// Si è verificato un errore
}
© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.