Roblox menggunakan bahasa pemrograman Luau. Sample kode dan tabel berikut menunjukkan beberapa perbedaan antara sintaks untuk C# dan Luau.
Akhiran baris
Anda tidak perlu menambahkan titik koma di Luau, tetapi itu tidak merusak sintaks.
Kata kunci yang dipreservasi
Tabel berikut berisi kata kunci yang dipreservasi di Luau yang dipetakan ke padanannya di C#. Perhatikan bahwa tabel ini tidak menunjukkan semua kata kunci C#.
| Luau | 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 satu baris--[[ Output yang dihasilkan:Komponen komentar--]]
Komentar di C#// Komentar satu baris/*Komponen komentar*/
String
String di Luau-- String multi-barislocal multiLineString = [[Ini adalah string yang,ketika dicetak, munculdi beberapa baris]]-- Penggabunganlocal s1 = "Ini adalah string "local s2 = "dibuat dengan dua bagian."local endString = s1 .. s2
String di C#// String multi-barisstring multiLineString1 = "Ini adalah string yang,\nketika dicetak, muncul\n di beberapa baris.";string multiLineString2 = @"Ini adalah string yang,ketika dicetak, munculdi beberapa baris";// Penggabunganstring s1 = "Ini adalah string ";string s2 = "dibuat dengan dua bagian.";string endString = s1 + s2;
Tabel
Untuk belajar lebih lanjut tentang tabel di Luau, lihat Tabel.
Tabel Kamus
Anda dapat menggunakan tabel di Luau sebagai kamus seperti di C#.
Tabel Kamus di Luaulocal dictionary = {val1 = "ini",val2 = "adalah"}print(dictionary.val1) -- Mengeluarkan 'ini'print(dictionary["val1"]) -- Mengeluarkan 'ini'dictionary.val1 = nil -- Menghapus 'val1' dari tabeldictionary["val3"] = "sebuah kamus" -- Menimpa 'val3' atau mengatur pasangan kunci-nilai baru
Tabel Kamus di C#Dictionary dictionary = new Dictionary(){{ "val1", "ini" },{ "val2", "adalah" }};Console.WriteLine(dictionary["val1"]); // Mengeluarkan 'ini'dictionary.Remove("val1"); // Menghapus 'val1' dari kamusdictionary["val3"] = "sebuah kamus"; // Menimpa 'val3' atau mengatur pasangan kunci-nilai barudictionary.Add("val3", "sebuah kamus"); // Membuat pasangan kunci-nilai baru
Tabel dengan Indeks Numerik
Anda dapat menggunakan tabel di Luau sebagai array seperti di C#. Indeks dimulai dari 1 di Luau dan 0 di C#.
Tabel dengan Indeks Numerik di Luaulocal npcAttributes = {"kuat", "cerdas"}print(npcAttributes[1]) -- Mengeluarkan 'kuat'print(#npcAttributes) -- Mengeluarkan ukuran daftar-- Tambahkan ke daftartable.insert(npcAttributes, "rendah hati")-- Cara lain...npcAttributes[#npcAttributes+1] = "rendah hati"-- Menyisipkan di awal daftartable.insert(npcAttributes, 1, "berani")-- Menghapus item di indeks tertentutable.remove(npcAttributes, 3)
Tabel dengan Indeks Numerik di C#List npcAttributes = new List{"kuat", "cerdas"};Console.WriteLine(npcAttributes[0]); // Mengeluarkan 'kuat'Console.WriteLine(npcAttributes.Count); // Mengeluarkan ukuran daftar// Tambahkan ke daftarnpcAttributes.Add("rendah hati");// Cara lain...npcAttributes.Insert(npcAttributes.Count, "rendah hati");// Menyisipkan di awal daftarnpcAttributes.Insert(0, "berani");// Menghapus item di indeks tertentunpcAttributes.Remove(2);
Operator
Operator Kondisional
| Operator | Luau | C# |
|---|---|---|
| Setara Dengan | == | == |
| Lebih Besar Dari | > | > |
| Kurang Dari | < | < |
| Lebih Besar Dari atau Setara Dengan | >= | >= |
| Kurang Dari atau Setara Dengan | <= | <= |
| Tidak Setara Dengan | ~= | != |
| Dan | and | && |
| Atau | or | || |
Operator Aritmatika
| Luau | C# | |
|---|---|---|
| Pertambahan | + | + |
| Pengurangan | - | - |
| Perkalian | * | * |
| Pembagian | / | / |
| Modulus | % | % |
| Pangkat | ^ | ** |
Variabel
Di Luau, variabel tidak menentukan jenisnya saat Anda mendeklarasikannya. Variabel Luau tidak memiliki modifikator akses, meskipun Anda dapat memberikan awalan "private" pada variabel dengan garis bawah untuk keterbacaan.
Variabel di Luaulocal stringVariable = "nilai"-- Deklarasi "Publik"local variableName-- Deklarasi "Pribadi" - diparsing dengan cara yang samalocal _variableName
Variabel di C#string stringVariable = "nilai";// Deklarasi Publikpublic string variableName// Deklarasi Pribadistring variableName;
Ruang Lingkup
Di Luau, Anda bisa menulis variabel dan logika dalam ruang lingkup yang lebih ketat daripada fungsi atau kelas mereka dengan menumpuk logika dalam do dan end, mirip dengan kurung kurawal {} di C#. Untuk detail lebih lanjut, lihat Ruang Lingkup.
Ruang Lingkup di Luaulocal outerVar = 'Teks ruang lingkup luar'do-- Modifikasi 'outerVar'outerVar = 'Teks dimodifikasi ruang lingkup dalam'-- Memperkenalkan variabel lokallocal innerVar = 'Teks ruang lingkup dalam'print('1: ' .. outerVar) -- mencetak "1: Teks dimodifikasi ruang lingkup dalam"print('2: ' .. innerVar) -- mencetak "2: Teks ruang lingkup dalam"endprint('3: ' .. outerVar) -- mencetak "3: Teks dimodifikasi ruang lingkup dalam"-- Mencoba mencetak 'innerVar' di sini akan gagal
Ruang Lingkup di C#var outerVar = "Teks ruang lingkup luar";{// Modifikasi 'outerVar'outerVar = "Teks dimodifikasi ruang lingkup dalam";// Memperkenalkan variabel lokalvar innerVar = "Teks ruang lingkup dalam";Console.WriteLine("1: " + outerVar); // mencetak "1: Teks dimodifikasi ruang lingkup dalam"Console.WriteLine("2: " + innerVar); // mencetak "2: Teks ruang lingkup dalam"}Console.WriteLine("3: " + outerVar); // mencetak "3: Teks dimodifikasi ruang lingkup dalam"// Mencoba mencetak 'innerVar' di sini akan gagal
Pernyataan Kondisional
Pernyataan Kondisional di Luau-- Satu kondisiif boolExpression thendoSomething()end-- Beberapa kondisiif not boolExpression thendoSomething()elseif otherBoolExpression thendoSomething()elsedoSomething()end
Pernyataan Kondisional di C#// Satu kondisiif (boolExpression) {doSomething();}// Beberapa kondisiif (!boolExpression) {doSomething();}else if (otherBoolExpression) {doSomething();}else {doSomething();}
Operator Kondisional
Operator Kondisional di Luaulocal max = if x > y then x else y
Operator Kondisional di C#int max = (x > y) ? x : y;
Loop
Untuk belajar lebih lanjut tentang loop di Luau, lihat Kontrol Struktur.
Loop While dan Repeat
Loop While dan Repeat di Luauwhile boolExpression dodoSomething()endrepeatdoSomething()until not boolExpression
Loop While dan Repeat di C#while (boolExpression) {doSomething();}do {doSomething();} while (boolExpression)
Loop For
Loop For Umum di Luau-- Loop majufor i = 1, 10 dodoSomething()end-- Loop mundurfor i = 10, 1, -1 dodoSomething()end
Loop For Umum di C#// Loop majufor (int i = 1; i <= 10; i++) {doSomething();}// Loop mundurfor (int i = 10; i >= 1; i--) {doSomething();}
Loop For atas Tabel di 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
Loop For atas Daftar di 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 semakin menyederhanakan bekerja dengan tabel.
Fungsi
Untuk belajar lebih lanjut tentang fungsi di Luau, lihat Fungsi.
Fungsi Umum
Fungsi Umum di Luau
-- Fungsi umum
local function increment(number)
return number + 1
end
Fungsi Umum di C#
// Fungsi umum
int increment(int number) {
return number + 1;
}
Jumlah Argumen Variabel
Jumlah Argumen Variabel di Luau
-- Jumlah argumen variabel
local function variableArguments(...)
print(...)
end
Jumlah Argumen Variabel di C#
// Jumlah argumen variabel
void variableArguments(params string[] inventoryItems) {
for (item in inventoryItems) {
Console.WriteLine(item);
}
}
Argumen Bernama
Argumen Bernama di Luau
-- Argumen bernama
local function namedArguments(args)
return args.name .. "'s birthday: " .. args.dob
end
namedArguments{name="Bob", dob="4/1/2000"}
Argumen Bernama di C#
// Argumen bernama
string namedArguments(string name, string dob) {
return name + "'s birthday: " + dob;
}
namedArguments(name: "Bob", dob: "4/1/2000");
Struktur Try-catch
Struktur Try/Catch di Luau
local function fireWeapon()
if not weaponEquipped then
error("Tidak ada senjata yang dipasang!")
end
-- Melanjutkan...
end
local success, errorMessage = pcall(fireWeapon)
if not success then
print(errorMessage)
end
Struktur Try/Catch di C#
void fireWeapon() {
if (!weaponEquipped) {
// Menggunakan pengecualian yang ditentukan pengguna
throw new InvalidWeaponException("Tidak ada senjata yang dipasang!");
}
// Melanjutkan...
}
try {
fireWeapon();
} catch (InvalidWeaponException ex) {
// Sebuah kesalahan telah terjadi
}