Roblox używa języka programowania Luau. Następujące przykłady kodu i tabele wskazują niektóre różnice między składniami C# i Luau.
Zakończenia linii
Nie musisz używać średników w Luau, ale one nie łamią składni.
Zarezerwowane słowa kluczowe
Następująca tabela zawiera zarezerwowane słowa kluczowe Luau w porównaniu do ich odpowiedników w C#. Zauważ, że nie pokazuje wszystkich słów kluczowych C#.
| Luau | C# |
|---|---|
| and | |
| break | break |
| do | do |
| if | if |
| else | else |
| elseif | else if |
| then | |
| end | |
| true | true |
| false | false |
| for | for lub foreach |
| function | |
| in | in |
| local | |
| nil | null |
| not | |
| or | |
| repeat | |
| return | return |
| until | |
| while | while |
Komentarze
Komentarze w Luau-- Komentarz jednolinijkowy--[[ Wynik wyjścia:Komentarz blokowy--]]
Komentarze w C#// Komentarz jednolinijkowy/*Komentarz blokowy*/
Napisy
Napisy w Luau-- Napis wieloliniowylocal multiLineString = [[To jest napis, który,po wydrukowaniu, pojawiasię na wielu liniach]]-- Konkatenacjalocal s1 = "To jest napis "local s2 = "utworzony z dwóch części."local endString = s1 .. s2
Napisy w C#// Napis wieloliniowystring multiLineString1 = "To jest napis, który,\npo wydrukowaniu, pojawia\n się na wielu liniach.";string multiLineString2 = @"To jest napis, który,po wydrukowaniu, pojawiasię na wielu liniach";// Konkatenacjastring s1 = "To jest napis ";string s2 = "utworzony z dwóch części.";string endString = s1 + s2;
Tabele
Aby dowiedzieć się więcej o tabelach w Luau, zapoznaj się z Tabelami.
Tabele słownikowe
Możesz używać tabel w Luau jako słowników, tak jak w C#.
Tabele słownikowe w Luaulocal dictionary = {val1 = "to",val2 = "jest"}print(dictionary.val1) -- Wydaje 'to'print(dictionary["val1"]) -- Wydaje 'to'dictionary.val1 = nil -- Usuwa 'val1' z tabelidictionary["val3"] = "słownik" -- Zastępuje 'val3' lub ustawia nową parę klucz-wartość
Tabele słownikowe w C#Dictionary dictionary = new Dictionary(){{ "val1", "to" },{ "val2", "jest" }};Console.WriteLine(dictionary["val1"]); // Wydaje 'to'dictionary.Remove("val1"); // Usuwa 'val1' ze słownikadictionary["val3"] = "słownik"; // Zastępuje 'val3' lub ustawia nową parę klucz-wartośćdictionary.Add("val3", "słownik"); // Tworzy nową parę klucz-wartość
Tabele z indeksem numerycznym
Możesz używać tabel w Luau jako tablic, tak jak w C#. Indeksy zaczynają się od 1 w Luau i 0 w C#.
Tabele z indeksem numerycznym w Luaulocal npcAttributes = {"silny", "inteligentny"}print(npcAttributes[1]) -- Wydaje 'silny'print(#npcAttributes) -- Wydaje rozmiar listy-- Dodaj do listytable.insert(npcAttributes, "pokorny")-- Inny sposób...npcAttributes[#npcAttributes+1] = "pokorny"-- Wstaw na początku listytable.insert(npcAttributes, 1, "odważny")-- Usuń element pod danym indeksemtable.remove(npcAttributes, 3)
Tabele z indeksem numerycznym w C#List npcAttributes = new List{"silny", "inteligentny"};Console.WriteLine(npcAttributes[0]); // Wydaje 'silny'Console.WriteLine(npcAttributes.Count); // Wydaje rozmiar listy// Dodaj do listynpcAttributes.Add("pokorny");// Inny sposób...npcAttributes.Insert(npcAttributes.Count, "pokorny");// Wstaw na początku listynpcAttributes.Insert(0, "odważny");// Usuń element pod danym indeksemnpcAttributes.Remove(2);
Operatory
Operatory warunkowe
| Operator | Luau | C# |
|---|---|---|
| Równy | == | == |
| Większy niż | > | > |
| Mniejszy niż | < | < |
| Większy lub równy | >= | >= |
| Mniejszy lub równy | <= | <= |
| Nie równy | ~= | != |
| And | and | && |
| Or | or | || |
Operatory arytmetyczne
| Luau | C# | |
|---|---|---|
| Dodawanie | + | + |
| Odejmowanie | - | - |
| Mnożenie | * | * |
| Dzielenie | / | / |
| Moduł | % | % |
| Potęgowanie | ^ | ** |
Zmienne
W Luau zmienne nie określają swojego typu, gdy je deklarujesz. Zmienne Luau nie mają modyfikatorów dostępu, chociaż możesz poprzedzać "prywatne" zmienne podkreślnikiem dla czytelności.
Zmienne w Luaulocal stringVariable = "wartość"-- Deklaracja "publiczna"local variableName-- Deklaracja "prywatna" - interpretowana w ten sam sposóblocal _variableName
Zmienne w C#string stringVariable = "wartość";// Deklaracja publicznapublic string variableName// Deklaracja prywatnastring variableName;
Zakres
W Luau możesz pisać zmienne i logikę w węższym zakresie niż ich funkcja lub klasa, zagnieżdżając logikę w słowach kluczowych do i end, podobnie jak w nawiasach klamrowych {} w C#. Aby uzyskać więcej szczegółów, zobacz Zakres.
Zakres w Luaulocal outerVar = 'Tekst zewnętrznego zakresu'do-- Modyfikuj 'outerVar'outerVar = 'Tekst wewnętrznego zakresu'-- Wprowadzanie zmiennej lokalnejlocal innerVar = 'Tekst wewnętrznego zakresu'print('1: ' .. outerVar) -- wydrukuje "1: Tekst wewnętrznego zakresu"print('2: ' .. innerVar) -- wydrukuje "2: Tekst wewnętrznego zakresu"endprint('3: ' .. outerVar) -- wydrukuje "3: "Tekst wewnętrznego zakresu"-- Próba wydrukowania 'innerVar' tutaj zakończyłaby się niepowodzeniem
Zakres w C#var outerVar = "Tekst zewnętrznego zakresu";{// Modyfikuj 'outerVar'outerVar = "Tekst wewnętrznego zakresu";// Wprowadzanie zmiennej lokalnejvar innerVar = "Tekst wewnętrznego zakresu";Console.WriteLine("1: " + outerVar); // wydrukuje "1: Tekst wewnętrznego zakresu"Console.WriteLine("2: " + innerVar); // wydrukuje "2: Tekst wewnętrznego zakresu"}Console.WriteLine("3: " + outerVar); // wydrukuje "3: "Tekst wewnętrznego zakresu"// Próba wydrukowania 'innerVar' tutaj zakończyłaby się niepowodzeniem
Instrukcje warunkowe
Instrukcje warunkowe w Luau-- Jeden warunekif boolExpression thendoSomething()end-- Wiele warunkówif not boolExpression thendoSomething()elseif otherBoolExpression thendoSomething()elsedoSomething()end
Instrukcje warunkowe w C#// Jeden warunekif (boolExpression) {doSomething();}// Wiele warunkówif (!boolExpression) {doSomething();}else if (otherBoolExpression) {doSomething();}else {doSomething();}
Operator warunkowy
Operator warunkowy w Luaulocal max = if x > y then x else y
Operator warunkowy w C#int max = (x > y) ? x : y;
Pętle
Aby dowiedzieć się więcej o pętlach w Luau, zapoznaj się z Struktura kontrolnymi.
Pętle while i repeat
Pętle While i Repeat w Luauwhile boolExpression dodoSomething()endrepeatdoSomething()until not boolExpression
Pętle While i Repeat w C#while (boolExpression) {doSomething();}do {doSomething();} while (boolExpression)
Pętle for
Ogólne pętle For w Luau-- Pętla w przódfor i = 1, 10 dodoSomething()end-- Pętla w tyłfor i = 10, 1, -1 dodoSomething()end
Ogólne pętle For w C#// Pętla w przódfor (int i = 1; i <= 10; i++) {doSomething();}// Pętla w tyłfor (int i = 10; i >= 1; i--) {doSomething();}
Pętle For po tabelach w Luaulocal 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
Pętle For po listach w 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 obsługuje także uproszczoną iterację, co dodatkowo upraszcza pracę z tabelami.
Funkcje
Aby dowiedzieć się więcej o funkcjach w Luau, zapoznaj się z Funkcjami.
Funkcje ogólne
Funkcje ogólne w Luau
-- Funkcja ogólna
local function increment(number)
return number + 1
end
Funkcje ogólne w C#
// Funkcja ogólna
int increment(int number) {
return number + 1;
}
Liczba argumentów zmiennych
Liczba argumentów zmiennych w Luau
-- Liczba argumentów zmiennych
local function variableArguments(...)
print(...)
end
Liczba argumentów zmiennych w C#
// Liczba argumentów zmiennych
void variableArguments(params string[] inventoryItems) {
for (item in inventoryItems) {
Console.WriteLine(item);
}
}
Argumenty nazwane
Argumenty nazwane w Luau
-- Argumenty nazwane
local function namedArguments(args)
return args.name .. "'s birthday: " .. args.dob
end
namedArguments{name="Bob", dob="4/1/2000"}
Argumenty nazwane w C#
// Argumenty nazwane
string namedArguments(string name, string dob) {
return name + "'s birthday: " + dob;
}
namedArguments(name: "Bob", dob: "4/1/2000");
Struktury try-catch
Struktury Try/Catch w Luau
local function fireWeapon()
if not weaponEquipped then
error("Nie ma broni!")
end
-- Kontynuuj...
end
local success, errorMessage = pcall(fireWeapon)
if not success then
print(errorMessage)
end
Struktury Try/Catch w C#
void fireWeapon() {
if (!weaponEquipped) {
// Użyj wyjątku zdefiniowanego przez użytkownika
throw new InvalidWeaponException("Nie ma broni!");
}
// Kontynuuj...
}
try {
fireWeapon();
} catch (InvalidWeaponException ex) {
// Wystąpił błąd
}