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#.
Lua | C# |
---|---|
and | |
break | break |
do | do |
if | if |
else | else |
elseif | else if |
then | |
end | |
true | true |
false | false |
for | for ou foreach |
function | |
in | in |
local | |
nil | null |
not | |
or | |
repeat | |
return | return |
until | |
while | while |
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 linhaslocal multiLineString = [[This is a string that,when printed, appearson multiple lines]]-- Concatenaçãolocal 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;
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 tabeladictionary["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
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 à listatable.insert(npcAttributes, "humble")-- Outra maneira...npcAttributes[#npcAttributes+1] = "humble"-- Inserir no começo da listatable.insert(npcAttributes, 1, "brave")-- Remover um item em um índice dadotable.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);
Operadores
Operadores Condicionais
Operador | Lua | C# |
---|---|---|
Igual a | == | == |
Mais Grande que | > | > |
Menos que | < | < |
Maior que ou igual a | >= | >= |
Menos que ou igual a | <= | <= |
Não é igual a | ~= | != |
E | and | && |
Ou | or | || |
Operadores Arítmeticos
Lua | C# | |
---|---|---|
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 maneiralocal _variableName
Variables in C#
string stringVariable = "value";// Public declarationpublic string variableName// Private declarationstring 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 locallocal innerVar = 'Inner scope text'print('1: ' .. outerVar) -- imprime "1: Inner scope modified text"print('2: ' .. innerVar) -- impressiona "2: Inner scope text"endprint('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 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
Declarações Condicionais
Declarações Condicionais em Luau
-- Uma condiçãoif boolExpression thendoSomething()end-- Múltiplas condiçõesif 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();}
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 dodoSomething()endrepeatdoSomething()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 frentefor i = 1, 10 dodoSomething()end-- Loop de Reversãofor 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();}
Para Loops Over Tables no 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);}
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
}