Comparação Luau e C#

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

O Roblox usa o idioma de programação Luau. As seguintes amostras de código e tabelas mostram algumas das diferenças entre as sintaxes para C# e Luau.

Finais de Linha

Você não precisa de ponto-e-vírgula em Luau, mas eles não quebram a sintaxe.

Palavras Reservadas

A tabela a seguir tem as palavras-chave reservadas do Luau mapeadas para o seu equivalente C#. Observe que não mostra todas as palavras-chave C#.

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

Comentários

Comentários em Luau

-- Comentário de linha comentar
--[[ Resultado da saída:
Block comment
--]]
Comments in C#

// Single line comment
/*
Block comment
*/

Cordas

Cordas em Luau

-- string / cadeia / textode várias linhas
local multiLineString = [[This is a string that,
when printed, appears
on multiple lines]]
-- Concatenação
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;

Tabelas

Para saber mais sobre tabelas em Luau, see Tabelas .

Tabelas de Dicionário

Você pode usar tabelas no Luau como dicionários, assim como no C#.

Tabelas de Dicionário em Luau

local dictionary = {
val1 = "this",
val2 = "is"
}
print(dictionary.val1) -- Produz 'isso'
print(dictionary["val1"]) -- Produz 'isso'
dictionary.val1 = nil -- Remove 'val1' da tabela
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

Tabelas Numéricamente Indexadas

Você pode usar tabelas em Luau como matrizes, como em C#. Índices começam em 1 em Luau e 0 em C#.

Tabelas Numéricamente Indexadas no Luau

local npcAttributes = {"strong", "intelligent"}
print(npcAttributes[1]) -- Produz 'forte'
print(#npcAttributes) -- Produz o tamanho da lista
-- Anexar à lista
table.insert(npcAttributes, "humble")
-- Outra maneira...
npcAttributes[#npcAttributes+1] = "humble"
-- Inserir no começo da lista
table.insert(npcAttributes, 1, "brave")
-- Remover um item em um índice dado
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);

Operadores

Operadores Condicionais

OperadorLuaC#
Igual a====
Mais Grande que>>
Menos que<<
Maior que ou igual a>=>=
Menos que ou igual a<=<=
Não é igual a~=!=
Eand&&
Ouor||

Operadores Arítmeticos

LuaC#
Adição++
Subtraição--
Multiplicação**
Divisão//
Módulo%%
Exponencial^**

Variáveis

In Luau, variables não especificam seu tipo quando você as declara. Variables do Luau não têm modificadores de acesso, embora você possa prefixar "privado" variáveis com um hífen para readabilidade.

Variáveis em Luau

local stringVariable = "value"
-- Declaração "Pública"
local variableName
-- Declaração "Privada" -interpretado da mesma maneira
local _variableName
Variables in C#

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

Mira

In Luau, você pode escrever variáveis e lógica em um âmbito mais apertado do que sua função ou classe ao aninhar a lógica dentro de do e end palavras-chave, semelhantes a curly brackets {} em C#. Para mais detalhes, see 1> âmbito1> .

Mira em Luau

local outerVar = 'Outer scope text'
do
-- Modificar 'outerVar'
outerVar = 'Inner scope modified text'
-- Introduz uma variável local
local innerVar = 'Inner scope text'
print('1: ' .. outerVar) -- imprime "1: Inner scope modified text"
print('2: ' .. innerVar) -- impressiona "2: Inner scope text"
end
print('3: ' .. outerVar) -- prints "3: "Texto de âmbito interno modificado"
-- 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

Declarações Condicionais

Declarações Condicionais em Luau

-- Uma condição
if boolExpression then
doSomething()
end
-- Múltiplas condições
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();
}

Operador Condicional

Operador Condicional em Luau

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

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

Looping

Para aprender mais sobre loops em Luau, see Estruturas de Controle .

Enquanto e Repetir Loops

Enquanto e Repetir Loops em Luau

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

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

Para Loops

Gerico para Loops em Luau

-- Loop de frente
for i = 1, 10 do
doSomething()
end
-- Loop de Reversão
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();
}
Para Loops Over Tables no 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);
}

O Luau também suporta iteração geralizada, o que simplifica ainda mais o trabalho com tabelas.

Funções

Para aprender mais sobre funções em Luau, see Funções .

Funções Gericas

Funções Gericas em Luau

-- Função genérica
local function increment(number)
return number + 1
end
Generic Functions in C#

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

Número de Argumento Variável

Número de Argumento Variável em Luau

-- Número de argumento variável
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);
}
}

ArgUMENTOS NOMINADOS

Arguentos Nomeados em Luau

-- Arguitos nomeados
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");

Tentando Capturar Estruturas

Tente/Pegue Estruturas em Luau

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