Roblox menggunakan bahasa pemrograman Luau. Berikut adalah beberapa contoh kode dan tabel yang menunjukkan beberapa perbedaan antara syntax untuk C# dan Luau.
Akhir Garis
Anda tidak memerlukan semikolon di Luau, tetapi mereka tidak menghancurkan syntax.
Kata-Kata yang Dipersilakan
Tabel berikut menunjukkan kata kunci C# yang direservasi ke C# mereka. Catat bahwa itu tidak menunjukkan semua kata kunci C#.
Lua | C# |
---|---|
and | |
break | break |
do | do |
if | if |
else | else |
elseif | else if |
then | |
end | |
true | true |
false | false |
for | for atau foreach |
function | |
in | in |
local | |
nil | null |
not | |
or | |
repeat | |
return | return |
until | |
while | while |
Komentar
Komentar di Luau
-- Komentar satis satu komen--[[ HasilOutput:Block comment--]]
Comments in C#
// Single line comment/*Block comment*/
Tali
String di Luau
-- Tali stringlocal multiLineString = [[This is a string that,when printed, appearson multiple lines]]-- Kontrasenasilocal 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;
Tabel
Untuk mempelajari lebih lanjut tentang tabel di Luau, lihat Tabel .
Tabel Kamus
Anda dapat menggunakan tabel di Luau seperti kamus seperti di C#.
Tabel Kamus di Luau
local dictionary = {val1 = "this",val2 = "is"}print(dictionary.val1) -- Output 'ini'print(dictionary["val1"]) -- Output 'ini'dictionary.val1 = nil -- Menghapus 'val1' dari tabeldictionary["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
Tabel-Índeks Numerik
Anda dapat menggunakan tabel di Luau seperti array seperti C#. Indeks dimulai di 1 di Luau dan 0 di C#.
Tabel-Índeks Numerik di Luau
local npcAttributes = {"strong", "intelligent"}print(npcAttributes[1]) -- Output 'kuat'print(#npcAttributes) -- Menyajikan ukuran daftar-- Tambahkan ke daftartable.insert(npcAttributes, "humble")-- Cara lain...npcAttributes[#npcAttributes+1] = "humble"-- Sisipkan di awal daftartable.insert(npcAttributes, 1, "brave")-- Hapus item di indeks yang diberikantable.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);
Pengoperasional
Operator Bersyarat
Operator | Lua | C# |
---|---|---|
Sama dengan | == | == |
Lebih Besar Dari | > | > |
Kurang dari | < | < |
Lebih Besar dari atau Sama dengan | >= | >= |
Kurang dari atau Sama dengan | <= | <= |
Tidak Sama Dengan | ~= | != |
Dan | and | && |
Atau | or | || |
Operator Aritmatika
Lua | C# | |
---|---|---|
Tambahan | + | + |
Penghapusan | - | - |
Pengganda | * | * |
Pembagian | / | / |
Modul | % | % |
Eksponensi | ^ | ** |
Variabel
Di Luau, variabel tidak menentukan jenis mereka saat Anda menyatakannya. Variabel Luau tidak memiliki modifikator akses, meskipun Anda dapat menambahkan "privat" variabel dengan tanda bawah untuk keserbagunaan baca.
Variabel di Luau
local stringVariable = "value"-- Deklarasi "Publik"local variableName-- Deklarasi "Pribadi" - diproses dengan cara yang samalocal _variableName
Variables in C#
string stringVariable = "value";// Public declarationpublic string variableName// Private declarationstring variableName;
Penglihatan
Di Luau, Anda dapat menulis variabel dan logika dalam skala yang lebih ketat daripada fungsi atau kelas mereka dengan menyisipkan logika di dalam do dan end kata kunci, mirip dengan curly brackets {} di C#. Untuk lebih banyak rincian, lihat 1> Scope1> .
Mengambil Luas
local outerVar = 'Outer scope text'do-- Modifikasi 'outerVar'outerVar = 'Inner scope modified text'-- Mengenalkan variabel lokallocal innerVar = 'Inner scope text'print('1: ' .. outerVar) -- mengeprint "1: Inner scope modified text"print('2: ' .. innerVar) -- mengeprint "2: Inner scope text"endprint('3: ' .. outerVar) -- mengeprint "3: "テキストスコープ修正済み印刷"-- 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
Pernyataan Kondisional
Pernyataan Kondisional di Luau
-- Satu kondisiif boolExpression thendoSomething()end-- Banyak kondisiif 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();}
Operator Bersyarat
Operator Kondisional di Luau
local max = if x > y then x else y
Conditional Operator in C#
int max = (x > y) ? x : y;
Lingkaran
Untuk mempelajari lebih lanjut tentang loop di Luau, lihat Struktur Kontrol.
Sementara dan Ulang Loop
Sementara dan Ulang Loop di Luau
while boolExpression dodoSomething()endrepeatdoSomething()until not boolExpression
While and Repeat Loops in C#
while (boolExpression) {doSomething();}do {doSomething();} while (boolExpression)
Untuk Loop
Umum untuk Loops di Luau
-- Lewati loopfor i = 1, 10 dodoSomething()end-- Reverse 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();}
Untuk Loops di Atas Tabel di 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 juga mendukung iterasi umum , yang lebih memudahkan bekerja dengan tabel.
Fungsi
Untuk mempelajari lebih lanjut tentang fungsi di Luau, lihat Fungsi .
Fungsi Umum
Fungsi Umum di Luau
-- Fungsi Umum
local function increment(number)
return number + 1
end
Generic Functions in C#
// Generic function
int increment(int number) {
return number + 1;
}
Jumlah Argument Variabel
Argumen Variabel di Luau
-- Nilai argumen variabel
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);
}
}
Argumen Bersifat Nama
Argumen Bersifat Nama di Luau
-- Argumen bernama
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");
Mencoba Menangkap Struktur
Coba/Tangkap Struktur di Luau
local function fireWeapon()
if not weaponEquipped then
error("No weapon equipped!")
end
-- Lanjutkan ...
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
}